Wenn Sie eine neue GUI erstellen, ist WPF die bevorzugte Wahl über Windows Forms? [geschlossen]

StackOverflow https://stackoverflow.com/questions/57909

Frage

Die meisten Einschränkungen und Tricks mit Windows Forms sind die meisten Programmierer gemeinsam. Aber da .NET 3.0 gibt es auch WPF zur Verfügung, die Windows Presentation Foundation. Es wird gesagt, dass Sie „sexy Anwendungen“ leichter mit ihm machen und mit .NET 3.5 SP1 hat es einen guten Geschwindigkeitsschub bei der Ausführung.

Aber auf der anderen Seite eine Menge Dinge, arbeitet anders mit WPF. Ich werde nicht sagen, dass es schwieriger ist, aber man muss „alles“ von Grund auf neu lernen.

Meine Frage: Lohnt es sich, diese zusätzliche Zeit zu verbringen, wenn Sie eine neue GUI erstellen und es gibt keinen Zeitdruck für das Projekt

?
War es hilfreich?

Lösung

WPF können Sie einige erstaunliche Dinge zu tun, und ich liebe es ... aber ich habe immer verpflichtet fühlen meine Empfehlungen zu qualifizieren, sobald Entwickler mich fragen, ob ich denke, sie sollten auf die neue Technologie bewegen.

Sind Ihre Entwickler bereit (vorzugsweise, EAGER), um die Zeit zu verbringen, es WPF zu lernen, nimmt effektiv zu nutzen? Ich würde nie über MFC sagen gedacht haben, oder Windows Forms, oder auch nicht verwaltete DirectX, aber Sie wollen wahrscheinlich nicht ein Team versucht, WPF über den Verlauf eines normalen Entwickler zu „holen“. Zyklus für einen Versand Produkt!

mindestens ein oder zwei Ihrer Entwickler haben einige Design-Empfinden und haben Personen mit endgültigen Design Autorität ein anständiges Verständnis für Fragen der Entwicklung, so dass Sie WPF Fähigkeiten etwas zu schaffen, nutzen kann, die gerade tatsächlich besser, statt mehr "bunt", mit unentgeltlicher Animation?

Ist ein gewisser Prozentsatz Ihrer Zielkundenbasis laufen auf integrierte Grafikchipsätze, die nicht die Eigenschaften unterstützen könnten Sie planten - oder laufen sie immer noch Windows 2000, die sie als Kunden zusammen beseitigen würde? Manche Leute würden auch fragen, ob Ihre Kunden CARE tatsächlich über verbesserte Optik, sondern obenes durch unternehmensinterne „Unsere Geschäftskunden kümmern sich nicht um Farben und Bilder“ Debatten in den frühen 90er Jahren, weiß ich, dass gut konzipierte Lösungen von Ihren Mitbewerbern sie kümmern, und die wirkliche Frage ist, wird, ob die Bedingungen stimmen, damit Sie etwas bieten, die sie JETZT machen kümmern.

Hat das Projekt einzubeziehen Gelände-up-Entwicklung, zumindest für die Präsentationsschicht, die zusätzliche Komplexität zu vermeiden versuchen, in unverträglich Vermächtnis Gerüst Haken (Interop mit Win Forms ist nicht nahtlos)?

Kann Ihr Manager übernehmen (oder von zu bemerken abgelenkt werden) einen deutlichen Rückgang in der Produktivität der Entwickler für vier bis sechs Monate?

Diese letzte Frage ist, wegen dem, was ich als die „Fizzbin“ WPF der Natur denken mag, mit zehn verschiedenen Möglichkeiten, jede Aufgabe zu implementieren und ohne ersichtlichen Grund einen Ansatz zu einem anderen zu bevorzugen, und wenig Anleitung zur Verfügung, um Sie machen eine Wahl. Nicht nur die Mangel, gleich welche Wahl Sie treffen erst viel später im Projekt klar worden, aber Sie sind praktisch garantiert jeden Entwickler an Ihrem Projekt haben einen anderen Ansatz verfolgt, in einem großen Wartung Kopfschmerzen führen. Die meisten frustrierend von allen sind die Widersprüche, die Sie ständig stolpern, wie Sie versuchen, den Rahmen zu lernen.

Sie können mehr in die Tiefe gehende WPF bezogenen Informationen in einem Eintrag auf meinem Blog:

http://missedmemo.com/blog/2008/09/13 /WPFTheFizzBinAPI.aspx

Andere Tipps

Nach drei Monaten versucht, einen Line-of-Business hämmern (LOB) Anwendung auf WPF, ich einen Punkt unter Berücksichtigung erreicht zurück zu Windows Forms für mein Projekt drehen, und die Meinungen anderer Menschen in der Erforschung, über diesen Thread kam ...

Ja, WPF ist eine brillante Technik und es hat Vorteile, die weit über die reine Augenschmaus ... Templat und Bindungsfähigkeiten sind großartige Beispiele umfassen. Das gesamte Objekt-Modell bietet mehr Flexibilität und breitere Möglichkeiten. Das bedeutet nicht, ist es jedoch die De-facto-Plattform für zukünftige LOB-Anwendungen machen.

Die „Probleme“, die WPF in Bezug löst GUI von Geschäftslogik zu trennen sind keine Probleme, die leicht in Windows Forms nicht gelöst werden können, indem Sie einfach mit der richtigen Architektur und Mind-Set zu starten. Selbst die Objekt-Pfad Bindungsfähigkeiten von WPF können in Windows Forms mit einigen sehr einfachen Hilfsklassen reproduziert werden. Die Datenvorlage-Funktionen von WPF sind sehr schön, aber auch hier nichts, was sie sind, dass Sie nicht in Windows Forms in den seltenen Fällen simulieren können, wenn man absolut nicht genau wissen, welche Objekte Sie an einem bestimmten Teil darstellen werden von der Bildschirm.

Wo Windows-Rennen vor Forms ist in Bezug auf die Reife. Sie können nicht eine tote Katze auf Google schwingen, ohne etwas Blog zu schlagen, wo jemand ein Windows Forms-Problem für Sie gelöst hat. WPF, auf der anderen Seite, hat vergleichsweise weniger Lernressourcen zur Verfügung, weniger Zollkontrollen zur Verfügung, und nicht wie viele seiner Zahnen Probleme gelöst hatte.

Auf dem Höhepunkt einer WPF vs Windows Forms Entscheidung zu treffen, hat zu der Reife der Entwicklungsumgebung zu sein. Windows Forms-Editoren sind glatt, reaktionsschnell und intuitiv. Feedback zu Fehlern kommen Sie sofort die Lösungen sind in der Regel klar, und die compile-> Debug-> bearbeitet Zyklus in Windows Forms ist sehr schnell.

WPF-Anwendungen, auf der anderen Seite, haben vergleichsweise pathetische Entwurfszeit-Unterstützung, mit der Entwurfsansicht allzu bereit zu kneifen bei der ersten Begegnung eines Fehlers erfordern, oft ein Projekt nach dem Update bauen, bevor der Designer bereit ist, zu treten wieder in. Drag'n'Drop von Komponenten aus der Toolbox könnte auch nicht die breite Palette von Umständen, unter denen unterstützt, gegeben werden, es entweder überhaupt nicht arbeiten, oder Erträgen vollständig unintuitive Ergebnissen. Trotz der Versprechen der WPFToolkit, gibt es noch nicht ein brauchbares Datagrid für WPF, das jede Art von vernünftiger Leistung oder Design-Zeit Freundlichkeit ergibt.

Debuggen von WPF-Anwendungen ist ein bisschen wie das alt ASP.NET-Debugging Paradigma ... hit F5 -> warten -> Start -> Fehler -> Stop -> fix -> Treffer F5 -> warten -> Start -> Fehler -> stöhnen -> Stop -> fix -> Treffer F5 .... Alle XAML, die Ihr Programm ist gesperrt, ausgeführt wird, und XAML spezifische Probleme aufzuspüren ist oft mühsam.

In der unteren Zeile, einfach ausgedrückt, ist, dass die Entwicklungs-Tools für Windows Forms werden Sie in einem Bruchteil der Zeit einer WPF-Anwendung heraus Frontends haben hämmern ... insbesondere , wenn Sie erstellen Master-Detail-Gitter oder Tabellenkalkulations wie Schnittstellen, die die meisten LOB haben. Mit Windows Forms, beginnen Sie mit 90% der Arbeit bereits erledigt.

Ich bin ein großer Fan von der WPF-Architektur. Ich wünsche nur, das Design-Time-Tool-Set nicht wie ein Pre-Alpha-Debug-Build fühlen.


Edit: Diese Antwort wurde über posted .NET 3.5 + Visual Studio 2008, aber .NET 4.0 mit Visual Studio 2010 wird mit einem WPF-Datenraster. Während viele Verbesserungen an die neuen WPF-Entwicklung Erfahrung gemacht, meine Antwort hier bleibt unverändert, und ich mag den folgenden Vorschlag hinzuzufügen:

Wenn Sie in Eile sind zu tun RAD Entwicklung, gehen Sie mit Windows Forms. Wenn Sie suchen eine gut archit zu produzierenektiert, wartbar, skalierbare Ressource firendly, Multi-User-Line-of-Business-Anwendung, sollten Sie ASP.NET MVC + HTML 5 + jQuery ... Meine Projekte mit diesen Technologien zu besseren Ergebnissen geführt haben, früher, für meine Kunden. MVC bietet alle die gleiche Templat, die WPF tut, und jQuery ermöglicht Animationen und komplexe Interaktionen. Noch wichtiger ist, ist eine ASP.NET MVC + jQuery Lösung nicht Endbenutzer erfordert modernen Desktop-PC mit anständigem Grafik-Hardware haben.

Ich bin 7 Monate in WPF auf das, was nun ein Kernsystem für meinen Kunden geworden, und ich würde gerne ein paar mehr Gedanken mit Ihnen über die Erfahrung des Lernens teilen und mit WPF als eine Linie von Business-Präsentationsplattform .

Im Allgemeinen sind die Kommentare, die ich oben noch ... Die Entwurfszeit-Unterstützung für WPF halten gemacht ist noch nicht da. Wenn Sie in einer großen Eile sind eine Rich-Client-Anwendung aus der Tür zu bekommen, mit Windows Forms gehen. Zeitraum. Microsoft sind in Eile nicht die GDI / Windows Forms-Plattform einzustellen, damit Sie sich auf eine gute Unterstützung für eine faire Zeit in die Zukunft zählen können.

WPF ist nicht einfach zu meistern , aber das sollte nicht sein, wo Sie Ihr Urteil entschiedenen zu lassen, ob Ihre Zeit und Energie in dem Lernen WPF zu investieren. Trotz seiner gegenwärtigen Mangel an Reife, ist WPF um einige nützliche, moderne Konzepte gebaut.

In WPF zum Beispiel Ihrer Investition in gut geschriebenen Business-Objekten mit Ton Validierung Logik ist eine solide Investition. Im Gegensatz zu Windows Forms, WPF Datenbindung mit Funktionen ist Brüning, die Schnittstellensteuerungen erlauben ungültige Benutzereingabe ohne das Schreiben GUI-Code zu reagieren, um diese Fehler zu erkennen. Dies ist wertvoll.

Das Styling und Templating Fähigkeiten in WPF haben sich als zu wertvoll sein. Trotz der weit verbreitetes Missverständnis, dass die einzige Anwendung für das Styling und Templat ist auf dem Bildschirm Augenschmaus zu schaffen, ist die Wahrheit, dass diese Merkmale deutlich die Kodierung einer Benutzeroberfläche vereinfachen, die reich Feedback gibt - wie Tasten, die aktiviert / deaktiviert sich auf Basis der Zustand der zugrunde liegenden Business-Logik-Schicht, oder Tooltips, die auf intelligente Weise ihren Text basierend auf dem Zustand des Objekts unter dem Cursor finden, usw.

Diese alle hinzufügen für „nichts Besonderes“ Business-Anwendungen , einfach unglaublich wertvolle Funktionen, weil sie machen es einfach, die Schnittstelle deckungsgleich mit den zugrunde liegenden Daten zu halten.

Auf den Punkt gebracht:

  • In Windows Forms Sie Ihren Benutzer entwerfen Schnittstelle, dann Code schreiben zu fahren dass die Benutzerschnittstelle, die im Allgemeinen auch enthält Code Ihr zu fahren Datenobjekte.
  • In WPF Sie in der Business-Schicht investieren, die Ihre Datenobjekte treibt, dann eine Schnittstelle entwerfen, dass Streams auf Ihre Datenobjekte.

Es ist ein scheinbar kleiner Unterschied, aber es macht einen großen Unterschied in Ihrer Fähigkeit, Code wieder zu verwenden ..., die die Frage aufwirft: „Ist das Windows Forms vs WPF Frage tatsächlich eine Investitionsentscheidung“

(Dies scheint mein Liebling Thread worden zu sein.)

Gibt es zwingende Gründe WPF verwenden

Auf jeden Fall! WPF ist absolut unglaublich! Es wird ein großer Vorteil für praktisch jedes Projekt, weil es so viele Funktionen und Fähigkeiten hat, dass Windows Forms fehlt.

Für Geschäftsanwendungen mit den größten Gewinnen werden:

  • Die fantastische Datenbindung und Templating den größten Unterschied machen. Sobald ein ordentliches Datenmodell vorhanden ist, es dauert nur ein paar Klicks eine Datenvorlage zu erstellen und verwenden Expression Blend genau festlegen, wie das Objekt aussehen wird per Drag-and-Drop. Und die Bindung an Dinge wie Farbe oder Form ist trivial.
  • Bildschirm-Layout ist unglaublich flexibel. Sie können nicht nur alles in WPF einstellen glatt Behältergröße und Formänderungen, sondern Artikel trivialer vergrößert und gedreht werden kann, und sogar außerhalb ihres enthaltenden Rahmens erstrecken.
  • Gewöhnliche Objekte jeder Art und Weise präsentiert werden können, die Sie mögen, einfach verschiedene Präsentationen in verschiedenen Bildschirmen haben, können Präsentation teilen, und können ihre Präsentation auf Änderungen der Datenwerte anzupassen.
  • Wenn Sie drucken möchten, an den Drucker-Rendering ist trivial. Richtig konfiguriert ist, macht WPF Crystal Reports oder SQL Server Reporting Services (SSRS) sehen aus wie ein Kinderspielzeug.
  • Ihre Benutzeroberfläche aussehen und fühlen sich viel dynamischer, einschließlich nette Features wie Schaltflächen, die animieren, wenn Sie die Maus über sie passieren.

Dienstprogramme und Spiele, weitere Vorteile kommen in den Vordergrund:

  • Sie können ganz einfach Formen, Linien und willkürliche Zeichnungen zu Ihrer Anwendung hinzufügen, ohne einen externen Editor. Jede Komponente kann diese durch Codedaten gebunden und animierte oder gesteuert werden. In Windows Forms ususally müssen Sie nur eine Bitmap importieren und verwenden Sie es als Service-Leistung, wenn Sie zu viel Arbeit gehen.
  • Animationen sind cool! Die Nutzer werden wirklich beeindruckt sein, solange man es nicht übertreiben Sie. Sie können aber auch den Menschen helfen, zu sehen, was los ist und die Notwendigkeit hilighting zu reduzieren. Wenn zum Beispiel ein Objekt ziehen können Sie das Ziel animieren zu zeigen, was passieren wird, wenn Sie es ablegen.
  • Farben, Farbverläufe, Bürsten, ausgefallene Schriftarten, Rotation von Objekten, Fliesen Bürste usw. Alles, was Sie wollen, sind grafisch Sie für die Frage.
  • Unglaublich anpassbar. Ich brauchte Eisenbahnschienen für eine Anwendung zu ziehen, so konnte ich einen Zug auf sie fallen. Ein paar Stunden später hatte ich gleise konnte ich irgendwo auf dem Bildschirm zeichnen mit Bézier-Kurven , und sie würden kommen und schalten automatisch ab.

Das Endergebnis ist, dass eine signifikante Größe GUI in Windows Forms bauen könnte in einem Drittel der Aufwand in WPF gebaut werden (oder weniger) und so aussehen, viel besser.

Ist WPF mehr Ressourcen (RAM insbesondere) erfordern

Sie haben einen Preis zahlen im Vergleich zu Windows Forms, aber es ist ein kleiner.

  • kann RAM gehen nach oben oder unten von der Implementierung abhängig. WPF speichert seine Daten effiziente so einzelne Objekte sind kleiner, aber es ist in der Regel mehr Objekte in WPF sein als in Windows Forms so dass diese ausgleicht, und entweder man kann kommen voran.
  • CPU wird steigen im Vergleich zu Windows Forms. Meiner Erfahrung nach Objekten die tatsächliche Aktualisierung von WPF Bildschirm etwa doppelt so viel CPU als normale Windows Forms-Rendering erfolgt. Wenn Ihre Anwendung den größten Teil seiner Zeit damit verbringt, den Bildschirm zu aktualisieren, WPF möglicherweise nicht für Sie sein. Aber in diesem Fall sind Sie wahrscheinlich nicht mit dem Windows Forms entweder: Die meisten Serious Games werden direkt auf DirectX .
  • Datenträgernutzung etwas weniger für WPF sein wird, weil es so viel weniger Code als Windows Forms nimmt. Die Daten werden die gleiche Größe, natürlich.

Noch eine Anmerkung über die CPU-Nutzung: Animationen und Transformationen (Bewegung, Übersetzung, etc.) ist tatsächlich effizienter auf WPF als in Windows Forms wegen seiner Retained Mode Lagerung. Es wird die anfängliche immer der Objekte dort also langsamer.

Wartungsaufwand

WPF ist ein groß gewinnt Windows Forms, wenn es um Wartung. Da alles wie zuvor in 1/5 so viel Code durchgeführt wird, ist es ein Fünftel so viel zu halten. Plus alle die vorformulierten Zeug ist weg, so dass Sie auf den Code konzentrieren können, die tatsächlich die Arbeit der Fall ist.

Vorteile von XAML

XAML ist der Kern von WPF. Obwohl WPF ohne XAML verwendet werden, macht XAML es unglaublich einfach zu bedienen. XAML hat HTML die Möglichkeit, einfach eine Benutzeroberfläche angeben, aber die eingebaute in Tags sind viel mächtiger, und Sie können Ihre eigenen leicht definieren. (In der Tat, es ist normal, dies zu tun).

Einige spezifische Vorteile von XAML:

  • Ihre gesamte Benutzeroberfläche ist in einer Textdatei definiert, die leicht zu lesen und zu manipulieren, sowohl für Anwender und Werkzeuge
  • MarkupExtensions erlauben Bindungen in einer einfachen und klaren Art und Weise festgelegt werden
  • Typ-Wandler ermöglicht Objekte mit komplexen Typen leicht festgelegt werden. Zum Beispiel können Sie Pinsel = „Green“ sagen, oder Sie können einen radialen Farbverlauf mit drei Stationen angeben.
  • Sie können Ihre eigenen Elemente erstellen
  • Sie können nutzen leicht WPF die leistungsstarke „angefügten Eigenschaften“

Andere Einsichten

Ich träumte von etwas wie WPF seit vielen Jahren. Viele Menschen Teile dieser Funktionalität implementiert haben, aber sie alle an einem Ort und zu einem solchen Preis ($ 0) ist erstaunlich, zu erhalten.

WPF ist ein sehr großer Paradigmenwechsel von Windows Forms und etwas gewöhnungsbedürftig, aber die Zeit damit verbringen, zu lernen es wird sich ein vielfaches zurückzahlen.

WPF hat noch ein paar Warzen sogar fünf Jahre später, aber seine Macht werden Sie weg völlig sprengen, wenn Sie es erleben. Wenn jemand versucht, Sie zurück zu Windows Forms zu ziehen, werden Sie nur gehen tretend und schreiend.

Tipps:  - Verwenden Sie eine Kopie von Expression Blend für die Entwicklung erhalten  - Sie bearbeiten XAML von Hand gelegentlich  - Geben Sie nicht auf, wenn es seltsam scheint auf den ersten

WPF erfordert entweder Windows Vista oder Windows XP SP2, die nicht eine lästige Anforderung ist, aber es ist ein relevanter ein. Wenn Sie unter Windows 2000 ausgeführt werden soll (was einige Leute immer noch tun), dann wird WPF nicht für Sie arbeiten.

WPF ist auch eine neuere Technologie und nicht so wie Windows Forms erwiesen, so dass Sie Windows Forms als weniger riskante Option wählen könnten, vor allem für größere Anwendungen.

Dass gesagt wird, ja WPF ist die Zukunft. Visual Studio 2010 wird in WPF neu geschrieben, was wahrscheinlich die größte WPF-Anwendung auf dem neuesten Stand sein wird, und es wird auch ein echter Test für die Technologie sein.

Offensichtlich ältere Windows Forms-Anwendungen eine andere Situation sein würde, wo es die richtige Wahl ist.

Wie schon andere gesagt haben, gibt es Vor- und Nachteile entweder so, wie Sie hier. Die Vorteile von WPF, wie andere gesagt haben, gehören:

  • Die Fähigkeit, sehr reichen UIs machen relativ leicht.
  • Einfachere Animation und Spezialeffekte
  • Inherent Skalierbarkeit (verwenden Sie das Windows Vista Lupe Tool auf einer WPF-Anwendung, und auf einem Windows Forms-Anwendung: Beachten Sie, dass in der WPF-Anwendung, all Vektor-Kunst-Skalen schön)
  • (MEINUNG ALERT) Ich glaube, es ist „einfacher“ dokumentenorientierte Systeme in WPF zu tun

Allerdings gibt es Nachteile zu WPF, wo Windows Forms an der Spitze kommt:

  • WPF in-Box-Steuerung Suite weit mehr als das begrenzt ist von Windows Forms.
  • Es gibt mehr Unterstützung in dem Fremdsteuerraum für Windows Forms. (Das ändert sich, natürlich, aber denken Sie daran:.. Windows Forms um ist seit 2001; WPF nur wenigen Jahren von Vorteil, Zeit, Windows Forms mehr Unterstützung in der Gemeinschaft hat)
  • Die meisten Entwickler wissen bereits Windows Forms; WPF stellt eine neue Lernkurve

Schließlich, denken Sie daran, dass Sie großen, attraktiven und ansprechenden UIs in jedem Werkzeug erstellen können, wenn Sie die Arbeit tun (oder die richtigen Tools von Drittanbietern verwenden). Am Ende des Tages, ist weder unbedingt besser unter allen Umständen. Verwenden Sie, was sich richtig anfühlt für das Projekt.

Das Programmiermodell für WPF ist offener und flexibler als Windows Forms ist, aber wie ASP.NET MVC, erfordert es ein wenig mehr Disziplin in Bezug auf die korrekte Model-View-Viewmodel-Muster zu implementieren.

Meine erste LOB Anwendung mit WPF endete als völlige failuire, denn es war Ressourcenfresser, die mein Endbenutzers sehr-Low-End-Laptops ins Stocken gebracht ... und das war schließlich, weil ich mit WPF + nur lept in LINQ to SQL und erwarteten ein gutes Ergebnis ... und das ist, wo WPF so stark von Windows Forms abzweigt ... In Windows Forms, können Sie mit dem wegkommen Art der Sache. WPF ist viel schwerer auf Ressourcen als Windows Forms, und wenn Sie nicht Architekten Ihre Anwendung tun schlank zu sein, am Ende mit einem 800-Pfund-Gorilla auf.

Nicht scheuen, von WPF ... erforschen es. Aber beachten Sie, dass die akzeptablen Sünden von Windows Forms-Codierung wird nicht gute Ergebnisse in WPF produzieren. Sie sind grundsätzlich andere Motoren, die sich dafür eignen, um grundlegend verschiedene Codierungsmuster.

Last Word: Wenn Sie mit WPF gehen Sie voran, erhalten sie gut mit Daten-Virtualisierung für den Einsatz mit Listen und Rastern acquianted. Was ist eine einfache datengebundenen ListItem oder Gridcell endet als ein saftiger logischer + visueller Objekt-Graph in WPF, und wenn Sie nicht lernen, wie virtualisieren, werden Sie nicht Anwendung eines gute Leistung auf große Datenmengen.

Es gibt eine sehr steile Lernkurve zu WPF, und ich empfehle Ihnen, die offensichtlichen Bücher bekommen zuerst ( Adam Nathan , Verkauft / Griffiths und Chris Anderson ) und Blogs ( Josh Smith , etc.). Seien Sie einfach darauf vorbereitet, und stellen Sie sicher, dass Ihr Projekt, das Sie sich die Zeit erlaubt WPF zu lernen.

Neben der Technologie zu lernen, verbringen einige Zeit, um die Muster Lernen verwendet WPF-Anwendungen zu konstruieren. Model-View-Viewmodel (MVVM) scheint die zu sein, die ein hohes Maß an Akzeptanz gewonnen hat.

Ich persönlich denke, WPF es wert ist, aber seien Sie gewarnt. Beachten Sie auch, dass Sie effektiv Ihre Benutzer auf Windows XP SP2 + und Windows Vista beschränken. Wir haben diese Entscheidung getroffen, aber Sie können einige unterschiedliche Anforderungen haben.

Beide Technologien haben ihre Vor- und Nachteile. In einer großen Anwendung mit einer „klassischen“ UI würde ich Windows Forms verwenden. In einer Anwendung, die eine reiche Benutzeroberfläche erfordern (Enthäuten, Animationen, Ändern Benutzeroberfläche) Ich würde WPF wählen. Überprüfen Sie bitte den Artikel WPF vs Windows Forms zu vergleichen WPF und Windows Forms.

Neben der Flexibilität in UI-Design, gibt es einige technische Vorteile zu WPF:

1.) WPF basiert nicht auf GDI-Objekten. Nun, ich denke, es wird mit 2 GDI-Objekten für die Instanz des Fensters selbst, aber das ist so gut wie nichts. Ich habe zu einem gewissen Grad in einem sehr großen internen Windows-Forms-Anwendung beteiligt. Die Menschen in unserem Büro laufen manchmal 3 oder 4 Instanzen davon gleichzeitig. Das Problem ist, dass sie häufig in die 10.000 GDI-Objekt Grenze inhärent Windows 2000, XP und Vista. Wenn das das gesamte OS geschieht reagiert nicht mehr und Sie werden visuelle Artefakte zu sehen beginnen. Der einzige Weg, es zu klären, ist es, Anwendungen zu schließen.

2.) WPF nutzt die GPU. Die Fähigkeit, für WPF zu einigen der UI Verarbeitung auf der GPU off-laden brillant. Ich erwarte, dass nur dieser Aspekt der es mit der Zeit besser. Als ehemalige OpenGL Programmierung Bastler kann ich die Leistung zu schätzen wissen, die von der GPU kommt. Ich meine, hat meine $ 100 Grafikkarte 112 Kerne mit 1,5 GHz je laufen (und das ist nicht oben auf der Linie mit allen Mitteln). Diese Art von Parallelverarbeitungsleistung jedes Quad-Core-CPU Schanden werden.

Allerdings WPF ist immer noch ziemlich neu. Es wird nicht laufen auf Windows 2000. Und in der Tat kann eine WPF-Anwendung langsam nach einem erneuten Neustart zu starten. Ich rede über all dies auf meinem Blog: http://blog.bucketsoft.com/ 2009/05 / wpf-ist-wie-Fett-super-hero.html

Ich denke, es wert ist WPF zu lernen. Sobald Sie bis zu Geschwindigkeit, Design-Arbeit auf Ihre Formulare sind viel einfacher ist IMHO. Ich würde nicht so viel über die ‚sexy‘ Sachen kümmern. Das meiste ist nur eine Modeerscheinung. Sie können ‚normale‘ WinForms-Stil-Anwendungen sehr schnell und einfach in WPF machen.

Das gesamte Konzept eignet sich IMO einfacher Entwurf.

ich mit einigen der Antworten hier nicht zustimmen. WPF ist wirklich gut geeignet für der Branche (LOB) -Anwendungen. (Der Frosch Design LOB-Client ist das beste Beispiel). Und außerdem alle Möglichkeiten Ihre UI haben Augenschmaus werden (die in Business-Anwendungen nicht erforderlich ist), WPF bietet viel mehr für Sie.

Die Datenbindung und Templating Features sind nur überlegen Windows Forms. Es bietet auch eine weit bessere Möglichkeit für Code und Präsentation zu trennen. Wir haben erfolgreich verwendet WPF für 2 LOB-Anwendungen in Teams mit nicht mehr als 2-3-Entwickler.

Das größte Problem wird das Gesicht Sie ist wahrscheinlich die steile Lernkurve von WPF (im Vergleich zu Windows Forms), die Entwicklungsgeschwindigkeit mit den Entwicklern nicht zu WPF verwendet abnehmen wird.

Wir sind Umschreiben derzeit unsere Anwendung in WPF von Windows Forms. Ja, es gibt eine steile Lernkurve und Sie müssen „wieder lernen,“ einige Dinge, aber es ist es wert. Und mit WCF kombiniert, wir finden wir weniger Code schreiben, schneller und robuster als je zuvor.

Stick mit ihm für eine Weile, lesen Sie Adam Nathans Buch und Besuche die ständig wachsende Bibliothek von Drittanbietern Kontrollen aus wie die von Telerik und ComponentOne . Ein negativer aus meiner Sicht ist, dass das Design-Tool, Expression Blend , ist sehr umständlich zu verwenden. Die neueste Version ist noch in der Beta, aber es fühlt sich einfach nicht richtig an diejenigen von uns, die Visual Studio seit Jahren verwendet haben. Ja, es ist in erster Linie für Designer, aber manche Dinge kann man einfach in Visual Studio nicht.

Betrachten Sie WPF, wenn Interface-Design für Sie wichtig ist, weil WPF bessere UI Erfahrung liefern kann. Aber Windows Forms auf seiner Seite hat die Jahre der Evolution, so ist es bewiesen zu arbeiten und Sie können viele versierte Programmierer für diese Plattform finden.

Auch Portabilität ein Problem sein kann, WPF funktioniert nur mit Windows XP SP2 und höher.

Auch hat WPF eine steile Lernkurve, was bedeutet, es ist nicht einfach, ohne spezifische WPF Erfahrung ein qualitativ hochwertiges Produkt zu liefern.

Nun, eine Antwort „wenn Sie 1.1 oder 2.0 unterstützen“, da WPF Teil von .NET 3.0 ist. Es gibt bekannte OS Einschränkungen für WPF, und es ist offensichtlich, dass die Fähigkeiten Problem: Wenn Sie ein Team von Entwicklern, die WinForms wissen, dann kann es einfacher sein, robusten Code entpuppen mit winforms. Wenn Sie jedoch eine Menge von UI-Code schreiben, ist es wahrscheinlich wert ist, beginnend an einem bestimmten Punkt zu holen WPF.

WPF teilt auch viel gemeinsam mit Silverlight, so hat es übertragbar Vorteile.

WPF kommt mit vielen Vorteilen wie hervorragende Datenbindung Features, Trennung von Bedenken, die Trennung von Design und Logik etc ...

Als Entwickler geniesse ich die Möglichkeit, meine UI zu definieren XAML im Gegensatz zu wird an den Windows Forms-Designer gebunden und ich fühle mich gut zu wissen, ich zählen kann auf einem anderen Designer meine app gut aussehen.

machen

Persönlich liegt mir nicht ältere Versionen von Windows werden nicht unterstützt, aber eines der großen Probleme mit WPF ist, dass es nicht (zur Zeit / je) unterstützt von Mono ( http://www.mono-project.com ) so WPF-Anwendungen nicht auf laufen Mac OS oder Linux. (Altough Silverlight-Anwendungen werden).

Wenn Sie die Zeit und Ressourcen in dem Lernen WPF zu investieren, tun Sie es! Auch wenn Sie Silverlight-Anwendungen zu schreiben werden mehr Betriebssysteme zu unterstützen.

Wenn Sie Desktop-Anwendungen auf mehreren Betriebssystemen mit SWF-Stick ausgeführt werden.

Es gibt viele Unterschiede. Wir waren begeistert von WPF für:

  1. Der deklarative Programmierstil.
  2. Animationen und Zustandsübergänge
  3. Expression Blend ist ein großes Werkzeug
  4. Gute Art Unterstützung.

Allerdings stecken wir mit Windows Forms, weil:

  1. Die zusätzliche Zeit, die für eine nimmt Entwickler WPF zu lernen, wenn sie bereits wissen, Windows Forms.
  2. WPF wird nicht ausgeführt auf Windows 2000 oder niedriger.

Die größte Überlegung bei der Entscheidung, welche zu benutzen ist zu prüfen, welche .NET Framework Ihrer Zielgruppe installiert hat. Ich finde, dass mehr Menschen die unteren .NET Framework-Versionen, die nur Windows Forms unterstützen, aber das ist nur meine persönliche Erfahrung.

Die Vorteile von WPF ist, dass es viel einfacher ist, gut aussehende GUIs mit benutzerdefinierten Steuerelemente und Animationen zu erstellen. WPF hilft auch weiter Einschleifmöglichkeiten die Präsentation und Logik Schichten. Wenn Sie Designer haben, erlaubt es Ihnen, von 95% dieser Arbeit nicht-Coder auf dem Bauernhof und ermöglicht die Codierer auf Logik zu arbeiten. Die Nachteile sind die Software-Kosten für Expressions Blend, und der Mangel an einem der Visual Studio-Code-Tools Profilierungs gut arbeiten, wie sie neigen dazu, in den Rahmen verfangen ruft bei dem Versuch, XAML zu machen. Ich bin sicher, es gibt andere, aber diese waren die einzigen zwei wir wirklich gesehen hat.

Das wichtigste Kriterium ist, wenn Sie Ihre Kunden benötigen mögen .NET 3.5 SP1 .NET 3.0 oder noch besser installieren zu müssen. Sie werden einige niegative Feedback bekommen

WPF macht es viel einfacher, die Formen Gestaltung der Arbeit zu einem tatsächlichen Designer zu übergeben, keinen Entwickler in Designerkleidung. Wenn das etwas ist, möchten Sie tun, ist WPF Ihre Antwort. Wenn die klassischen Windows-Stil Tasten fein sind, dann Windows Forms ist wahrscheinlich der Weg zu gehen.

(Mehrfachnennungen machen den Anspruch, die Sie WPF verwenden sollten, wenn Interface-Design „für Sie wichtig“ sind, aber das ist ziemlich vage. Interface-Design ist immer „wichtig“).

Wenn Sie eine MSDN-Lizenz Besuche Expression Tools . Es wurde entwickelt, explizit für WPF, Exporte direkt in Visual Studio und es kann helfen, den Einstieg zu erleichtern.

Wenn Sie kümmern sich nur um Windows-Unterstützung und kümmern sich nicht die Zeit, die es zu lernen dauert, gehen Sie mit WPF. Es ist schnell, flexibel, einfach zu reskin, und hat große Werkzeuge mit ihm zu arbeiten.

Als Neben Bonus wird Silverlight basiert auf WPF und beginnend mit entweder können Sie das Know gewinnen, wie für die anderen arbeiten. Wenn die Dinge weiter webbasiertes gehen, Vorwissen mit (und einer Bibliothek bestehenden Code) auf einfache Weise an den Browser zu übertragen (oder Windows Live Mesh) könnte Ihrer Software eine zusätzliche Miete des Lebens helfen geben.

Wenn Sie sich entscheiden, mit WPF zu gehen, Vor-und Nachteile unter Berücksichtigung bereits in den oben genannten Antworten erklärt, empfehle ich gehen durch diese dnrTV Folge mit Billy Hollis

DotNetRocks Folge 315 diskutiert Brian Noyes dies ausführlich.

Es ist ein bekanntes Problem mit Text-Rendering in WPF. Viele Anwender berichten, dass die starke Nutzung von Anti-Aliasing und Pixel-Blending Ursachen verschwommenen Text verwendet wird. Dies ist ein großer Deal Breaker unter bestimmten Umständen und, soweit ich weiß, wird von Microsoft auf einem bestimmten Ebene anerkannt.

Für die letzten 3 1/2 Jahren habe ich von Windows getan Forms Entwicklung (bei zwei Unternehmen). Beide Anwendungen wurden ausgiebig und landete mit GDI Probleme. Großes Windows Forms-Anwendungen werden schließlich aus GDI-Ressourcen führen -. Wodurch die Endanwender neu starten müssen

Scott beschwert sich über Expression Blend und wie es macht keinen Sinn für ihn als Entwickler machen. Meine erste Reaktion auf Expression Blend war ähnlich. Aber jetzt sehe ich es als ein sehr wertvolles Werkzeug, aber es hängt wirklich davon ab, welche Art von Entwickler Sie sind.

Ich bin Benutzeroberfläche Entwickler, die die XAML nehmen, die ausspucken wird ist eine hervorragende Möglichkeit, das WPF-API ... ähnlich wie mit dem Designer in Windows Forms und Überprüfung der C # -Code es ausspuckt ist hilfreich zu lernen, wie zu verwenden, um zu lernen, was Sie es entwerfen.

Expression Blend ist hilfreich. geben Sie es einfach mal aus, vor allem, wenn Sie auf die Grafik für die Anwendung arbeiten.

Ein Zitat von eine frühere Post von Mark :

  
      
  • In Windows Forms Sie Ihre Benutzeroberfläche entwerfen, dann Code schreiben, um diese Benutzerschnittstelle zu fahren, die in der Regel enthält auch Code, um Ihre Datenobjekte zu fahren.
  •   
  • In WPF Sie in der Business-Schicht investieren, die Ihre Datenobjekte treibt, dann eine Schnittstelle entwickeln, die auf Ihre Datenobjekte zuhört.
  •   

Ich würde behaupten, dass dies eher eine Design-Wahl ist, sondern als ob Sie Windows Forms oder WPF verwenden. Ich kann jedoch erkennen, dass bestimmte Technologien könnten besser geeignet sein für einen bestimmten Ansatz.

Nur wenn Sie WPF Know-how nicht und Sie nicht wollen, in sie investieren:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top