WPF versus Windows Forms - Die Diskussion

Der Dotnet-Doktor  –  5 Kommentare

Mein angekündigter Beitrag über die Qual der Wahl zwischen Windows Forms und WPF ist nun auf Heise Developer verfügbar.

Das es sich dabei um ein "heißes Eisen" handeln, haben wir auch gestern Abend auf unserer Veranstaltung "WPF und Silverlight in der Praxis" gesehen. Mein Kollege Daniel Greitens vertrat dabei die Seite des Gestalters, der natürlich begeistert ist von WPF, weil man damit endlich auch die Themen Design und Usability adäquat berücksichtigen könne. Ich war der Skeptiker von der Entwicklerseite, der wiederholt zusammen mit unseren Kunden zu dem Entschluss gekommen ist, vorerst weiter auf Windows Forms zu setzen. Gerade für typische Geschäftsprozessanwendungen (bei denen es im Wesentlichen darum geht, Daten aus Datenbanken zu lesen und zu schreiben sowie Berichte zu drucken) ist WPF bei weitem noch nicht so produktiv einsetzbar wie Windows Forms. Ich denke, ab .NET 4.0/Visual Studio 2010 wird die Lage für WPF besser sein. Aber das hilft niemandem, der jetzt mit einer Anwendung beginnen muss und nicht das zusätzliche Schulungs-, Entwicklungs- und Designerbudget hat, das WPF ihn kosten wird. Andererseits: Wer auf Zeit und Geld nicht so sehr achten muss, ist mit WPF langfristig besser bedient!

Unterstützun fand ich heute durch Zufall auch noch bei meinem Autorenkollegen Michael Kofler, der in seinem Bestseller "Visual Basic 2008" auf Seite 588 schreibt: "Bei Datenbankprogrammen würde ich momentan eher zu Windows Forms raten. WPF unterstützt data binding zu ADO.NET nur mit vielen Einschränkungen, außerdem fehlen wichtige Steuerelemente". Außerdem schreibt er: "Bei Neuentwicklungen müssen Sie abwägen, was für Sie wichtiger ist: Kompatibilität zu alten Windows-Versionen und Effizienz in der Programmentwicklung oder Zukunftssicherheit und ein modernes Aussehen der Benutzeroberfläche.". Bis auf Nuancen (ich würde nicht den Begriff "Datenbankprogramme" verwenden und ich denke, dass man auch Windows Forms-Anwendungen "modern" aussehen lassen kann), stimme ich mit Michael überein.

Aber ich möchte auch gerne noch eine Gegenstimme zitieren. Dr. Joachim Fuchs, der für unsere Firma als .NET-Entwickler und -Trainer (u.a. im Bereich WPF) arbeitet, schrieb mir als Feedback nach der Vorab-Durchsicht meines Artikels: "Irgendwie kommen mir die Argumente aber sehr bekannt vor. Ersetze doch mal WinForms durch VB6 und WPF durch WinForms. Dann ergibt sich dieselbe Ausgangssituation wie vor 8 Jahren. VB6 (oder auch MFC) war doch ausgereift, funktionierte gut und es gab beliebig viele Controls. Die erste WinForms-Version war doch auch sehr abschreckend. Die Steuerelemente waren allesamt schlechter als die von VB6, die Programmierung viel komplizierter und überhaupt... VB6 funktioniert auch heute noch und braucht keine Framework-Installation. Aber würdest Du heute noch jemandem empfehlen, damit zu arbeiten? ... Wer jetzt mit WinForms weiter macht, ist kurzfristig und vielleicht mittelfristig besser beraten, schiebt aber einen immer größer werdenden Berg von WinForms-Code vor sich her. WinForms-Projekte nach WPF zu portieren macht keinen Sinn. Es gibt keine Tools, und selbst wenn es sie gäbe, würde nichts Brauchbares dabei heraus kommen. Die Konzepte sind schlichtweg zu unterschiedlich, genauso wie damals beim Schritt von VB6 auf .NET."

Und weiter schrieb mir Joachim: "Was am Anfang ganz klar falsch gemacht wurde, war, die Grafikmöglichkeiten von WPF derart in den Vordergrund zu stellen. Zudem waren die gezeigten Animationen eher kontraproduktiv....In den Köpfen hat sich leider festgesetzt, dass WPF eine Grafikspielerei ist, die man nicht braucht. Die wesentlichen Kernkonzepte sind eigentlich andere und WPF bietet viele Vorteile jenseits der Grafiktechniken. Aber man braucht eben eine gewisse Einarbeitungszeit. 5 Tage Schulung sind da oft ein bisschen zu kurz. Übrigens: mit XAML haben sich meine Teilnehmer bisher immer erstaunlich schnell anfreunden können." Und sein Fazit: "Ich halte WPF/Silverlight für eine gute Investition in die Zukunft. Die Technik ist meiner Meinung nach soweit, dass man sie einsetzen kann und sollte. Irgendwann wird es (im Microsoft-Umfeld) der Standard werden, umso mehr sollte man vorbereitet sein."

Und Ihr Fazit? Lassen Sie uns am Einzelfall darüber reden, was für Ihren konkreten Fall besser ist. Man sollte weder pauschal das ein noch das andere empfehlen.