Ich habe die meisten wichtigen Themen zu WPF vs. WinForms gelesen und bin festgefahren in der unglücklichen Ambivalenz, in die Sie geraten können, wenn Sie sich zwischen der bewährten Vorgängertechnologie (Winforms) und deren Nachfolger (WPF) entscheiden.
Ich bin ein langjähriger erfahrener Delphi-Programmierer, der endlich den Sprung nach C # schafft. Meine Kollegen unter den Delphi-Programmierern werden verstehen, dass ich gespannt bin, dass Anders Hejlsberg, der in Delphi berühmt ist, der Architekt hinter C # war. Ich bin stark von Delphis benutzerdefinierten VCL-Komponenten abhängig, insbesondere von denen, die mehrstufige Assistenten und Komponenten erstellen, die als Container für untergeordnete Komponenten fungieren.
Vor diesem Hintergrund hoffe ich, dass diejenigen von Ihnen, die von Delphi zu C # gewechselt sind, mir bei meiner Entscheidung zwischen WinForms und WPF beim Schreiben meiner ersten Anwendungen helfen können. Beachten Sie, dass ich sehr ungeduldig bin, wenn Codierungen und Dinge wie vollständige automatische Vervollständigung und ordnungsgemäße Debuggerunterstützung ein Projekt für mich erstellen oder unterbrechen können, einschließlich der Möglichkeit, sofort verfügbare Informationen zu API-Funktionen und -Aufrufen zu finden, und insbesondere Problemumgehungen für Fehler .
Die SO-Threads und Kommentare im Datumsbereich von Anfang 2009 geben mir große Sorge über WPF, wenn es um potenzielle Frustrationen geht, die meine C # UI-Entwicklungscodierung beeinträchtigen könnten. Andererseits ist es ebenso problematisch, übermäßig viel Zeit damit zu verbringen, eine API-Technologie zu erlernen, die, auch wenn sie nicht aufgegeben wird, bald ersetzt wird (WinForms), und ich finde die GPU-Unterstützung in WPF verlockend.
Daher meine Ambivalenz. Da ich noch keine der beiden Techniken gelernt habe, habe ich die seltene Gelegenheit, einen Neuanfang zu machen, und muss mich nicht der großen "Verlernen" -Kurve stellen, die in verschiedenen Threads erwähnt wurde, wenn ein WinForms-Programmierer zu WPF wechselt. Wenn die Verwendung von WPF für einen ungeduldigen RAD-Entwickler wie mich zu frustrierend ist oder andere schwerwiegende negative Folgen hat, bleibe ich bei WinForms, bis WPF den gleichen Grad an Unterstützung und Benutzerfreundlichkeit erreicht. Um Ihnen ein konkretes Beispiel für meine Psychologie als Programmierer zu geben, habe ich VB und anschließend Delphi verwendet, um den wirklichen Schmerz des Codierens mit MFC, einer Windows-UI-Bibliothek, unter dem viele Entwickler bei der Entwicklung früher Windows-Apps zu leiden hatten, vollständig zu vermeiden. Ich habe mein Glück, MFC zu vermeiden, nie bereut.
Es wäre auch beruhigend zu wissen, ob Anders Hejlsberg an der Architektur von WPF und / oder WinForms mitgewirkt hat und ob es Unterschiede in der kreativen Vision und Benutzerfreundlichkeit gibt, die in beiden Codebasen enthalten sind. Lassen Sie mich zum Schluss noch einmal für die Delphi-Programmierer wissen, wie viel "IDE-Schock" ich zu erwarten habe, wenn ich WPF im Gegensatz zu WinForms verwende, insbesondere wenn es um die Unterstützung von Debuggern geht. Alle für 2011 aktualisierten Kommentare zum Stellenmarkt sind ebenfalls willkommen.
Antworten:
Wenn Sie einen Delphi-Hintergrund haben, werden Sie von WinForms enttäuscht sein. Sie werden versuchen, Dinge zu tun, die in der VCL einfach waren, nur um festzustellen, dass sie schmerzhaft schwierig oder sogar unmöglich sind. WPF wird viel weniger einschränkend sein.
Zum Beispiel sind hier nur einige der Einschränkungen von WinForms, auf die wir gestoßen sind:
WPF ist in mancher Hinsicht ein bisschen einfacher als WinForms, aber es ist immens erweiterbar.
WPF hat eine sehr steile Lernkurve, aber wenn Sie sich ein gutes Buch zulegen (z. B. " WPF 4 Unleashed "), hilft es Ihnen, das Schlimmste zu überwinden - und Sie werden froh sein, mit einem solchen Framework zu arbeiten hält Sie nicht zurück, wie es WinForms tun wird.
quelle
Ich bin normalerweise sehr überrascht, wenn Leute sagen, dass sie keine guten Erfahrungen mit WPF gemacht haben. Ich bin ein Entwickler, der von C ++ / MFC zu C # / WinForms zu C # / WPF gewechselt ist. Der Übergang von WinForms zu WPF war nicht einfach, da das Erlernen von XAML nicht sehr einfach ist, aber wenn Sie erst einmal darauf gekommen sind, ist es eine großartige Technologie. Ich kann nicht zu WinForms zurückkehren. WPF ist einfach fantastisch.
Die andere Sache, die mich stört, ist, wie Leute normalerweise WPF nur mit UI verbinden. Es ist in der Tat meiner Meinung nach 100-mal besser als WinForms, was das Design der Benutzeroberfläche angeht, aber es gibt viele andere Gründe, warum Sie gerne WPF verwenden:
Vielleicht stimmen Sie mir in Bezug auf den letzten Punkt nicht zu, aus dem Sie WPF lernen möchten, aber wenn Sie mich fragen, ist dies einer der größten. Wenn Sie WPF lernen, können Sie problemlos zu Silverlight wechseln. Silverlight wird immer größer und es ist auch eine großartige Technologie.
Und der größte Grund ist, dass es die Zukunft ist. Es könnte mit Silverlight zusammengeführt werden, aber die Fähigkeiten bleiben gleich.
Daher rate ich Ihnen dringend, den WPF-Weg zu gehen.
quelle
Offensichtlich ist WPF der richtige Weg, um in Zukunft zu denken. Es ist schwer zu meistern, aber die Plattform ist sehr gut aufgebaut und flexibel.
Einige Ratschläge:
quelle
Ich sollte zuerst bemerken, dass ich größtenteils ein asp.net-Entwickler bin, obwohl ich schon oft Winforms verwendet habe. Der Wechsel zu WPF ist nicht so groß wie Sie es (imo) nach einer Woche oder so (40+ Stunden) machen, die meisten waren wieder zweite Natur.
Jedenfalls glaube ich, dass Anders Hejlsberg einer der Architekten hinter WPF ist, zumindest laut den Herausgebern dieses Buches->
„ Als einer der Architekten hinter WPF erklärt Chris Anderson nicht nur gekonnt das Wie, sondern auch das Warum. Dieses Buch ist eine hervorragende Ressource für alle, die die Gestaltungsprinzipien und Best Practices von WPF verstehen möchten. - Anders Hejlsberg, technischer Mitarbeiter der Microsoft Corporation
http://www.amazon.com/Essential-Windows-Presentation-Foundation-WPF/dp/0321374479
quelle
Winforms ist nahezu identisch mit der Delphi-Entwicklung. Und dafür gibt es natürlich einen Grund. So wie das Delphi / Object Pascal-Objektmodell C # stark beeinflusste, beeinflusste das Formularsystem Winforms.
WPF scheint die Richtung zu sein, in die die Dinge gehen; Es heißt, dass die (umwerfende!) VS2010-Benutzeroberfläche im Gegensatz zu früheren Generationen, die auf Winforms basieren, auf WPF basiert.
Wenn Sie in Ihrer Komfortzone bleiben möchten, entscheiden Sie sich für winforms. Wenn Sie sich über das Neueste und Beste informieren möchten, tauchen Sie in WPF ein.
quelle
Ich bin kein Delphi-Programmierer, aber ich habe sowohl an WinForm (stark) als auch an WPF (weniger als mäßig) gearbeitet. Ich bin einigermaßen mit Ihnen einverstanden, was die Frustration für jemanden angeht, der von WinForm zu WPF wechseln würde, da ich mich in dieser Situation befinde, aber nur, bis ich mich daran gewöhnt habe. Erfahren Sie, wie wunderbar und flexibel WPF im Vergleich zu WinForm ist. Zumindest für jemanden, der aus Delphi stammt und nicht aus Winform, ist die Lernphase sehr lang. Für Sie lohnt es sich definitiv, auf WPF anstatt auf WinForm umzusteigen, und die Zeit ist es wert.
Vielleicht möchten Sie zunächst die folgenden Links durchsehen:
quelle
Ich hatte einige Windows Forms-Arbeiten ausgeführt (hauptsächlich auf Pocket PCs) sowie eine andere Nicht-.NET-Umgebung, in der dieselben Prinzipien verwendet wurden. Als ich vor ungefähr drei Jahren zu WPF wechselte, habe ich in den ersten Monaten darauf geschworen. Irgendwann hat es einfach "geklickt" und ich habe nicht zurückgeschaut - tatsächlich wäre ich verblüfft, wenn mein nächstes Projekt erfordert, dass ich zu Windows Forms zurückkehre.
Das letzte Mal, dass Windows Forms aktualisiert wurde, war 2005 (VS 2005). Es ist immer noch vorhanden, wird jedoch von Microsoft nicht mehr verbessert. WPF ist das neue Kind auf dem Block für Desktop-Apps. Wenn Sie also mit MS-Tools auf die .NET-Plattform wechseln möchten, ist dies die sichere Wahl. Einige Leute empfehlen Silverlight als Desktop-Lösung, aber als ich es als eine Möglichkeit ansah, stellte ich fest, dass es zu viele Einschränkungen hatte (was in einem Web-Kontext vielleicht Sinn macht, aber nicht so sehr auf dem Desktop).
Fazit: Es gibt eine steile Lernkurve und ich lerne sie immer noch. Aber es hat sich gelohnt. Es macht viel Spass.
quelle
Wenn Sie neue Anwendungen von Grund auf neu schreiben möchten, ist die Verwendung von WinForms ein Fehler. Es ist im Grunde genommen aus Investitionssicht tot. Microsoft wird es für eine lange Zeit beibehalten, aber Sie werden keine neuen Funktionen oder neue Unterstützung usw. erhalten. WPF ist die klare Richtung für Desktop-Anwendungen für die Zukunft auf der MS-Plattform.
Aus beruflicher Sicht sind Sie auch weitaus besser in der Lage, WPF vs. WinForms zu kennen. Aus den gleichen Gründen wie oben. Außerdem haben Sie einen guten Einstieg in das Erlernen von Silverlight. Es gibt eine Menge Überlappungen zwischen diesen beiden Plattformen.
Und schließlich macht WPF einfach mehr Spaß. Und mächtiger.
Die Lernkurve ist steiler, das gebe ich dir. Aber am Ende ist es lohnender.
quelle
Eine zusätzliche Überlegung, die erwähnt werden sollte, ist, dass es keinen Plan für die WPF-Unterstützung in Mono gibt . Mir ist klar, dass Sie kein Interesse an (mono) plattformübergreifender Unterstützung bekundet haben, aber es könnte in Ihrer Zukunft eine Gelegenheit dafür geben (wenn Sie sich für Winforms entscheiden). Voraussichtlich wird WPF in Mono (oder ähnlichem) unterstützt.
Bearbeiten: Wie der von mir bereitgestellte Link und Gulshans Kommentar hervorhoben, handelt es sich bei Moonlight um eine Open-Source-Aktion, die vom Mono-Team durchgeführt wird, um plattformübergreifenden Silverlight-Support bereitzustellen .
quelle
Ich war aufgeregt, als ich von WPF hörte, die Idee klang großartig und alles, was ich darin gesehen habe, war wunderschön. Als ich es jedoch in Visual Studio 2008 (zugegebenermaßen eine Beta) verwendete, fand ich es frustrierend und eigenartig, mit dem Designer / der IDE zu arbeiten.
Ich habe zu der Zeit ein paar Informationen in meinem Blog gepostet:
http://blog.dantup.com/2007/08/visual-studio-2008-beta-2-first.html
http://blog.dantup.com/2007 /08/wpf-designer-cider-part-2.html
Ich habe es 2010 nicht ausprobiert, obwohl ich mit ein paar Leuten gesprochen habe, die es getan haben, und es klingt, als wäre es immer noch etwas kompliziert / nervig, sich damit auseinanderzusetzen.
Ich denke, Ihre Anwendung würde in WPF zweifellos besser aussehen / sich besser anfühlen, aber ich denke auch, dass Sie länger brauchen werden, um sie zu erstellen, und Sie werden Ihren Kopf auf dem Weg viel schlagen.
quelle