Laden...

WPF oder Windows-Form, wie sind die Unterschiede und was ist besser für die Zukunft?

Erstellt von Krumnix vor 5 Jahren Letzter Beitrag vor 5 Jahren 8.582 Views
K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren
WPF oder Windows-Form, wie sind die Unterschiede und was ist besser für die Zukunft?

Hallo.

Ich arbeite bis jetzt immer in Windows-Forms und komme dort auch soweit gut zurecht.
Nun lese ich immer öfters, dass Windows-Forms eher am "aussterben" sind und nicht mehr verwendet werden "sollten". Grund sei, dass MS den Support für Windows-Forms eingestellt hat und keine Neuerungen mehr einpflegt.

Bevor ich nun stärke in WPF einsteige und zukünftige Projekte darin entwickle, wollte ich mal allgemein Fragen, wie sich das mit Forms und WPF verhält?

Wie sieht die Zukunft aus und was empfiehlt sich als "besser"?
Wie sieht es mit der Performance aus, gibt es unterschiede und ab welcher Programmgröße spürt man diese?
Ist der Umstieg groß?

Danke für ihre Erfahrungen und Tipps!

16.807 Beiträge seit 2008
vor 5 Jahren

"aussterben"

Nein.

Grund sei, dass MS den Support für Windows-Forms eingestellt hat

und keine Neuerungen mehr einpflegt.

Windows Forms und WPF gelten beide im Prinzip als Feature Complete.
Trotzdem kommen in beiden Welten noch Dinge hinzu, zB neulich erst High DPI Support.

Wie sieht die Zukunft aus und was empfiehlt sich als "besser"?

Kommt drauf an, was man macht.> Wie sieht es mit der Performance aus, gibt es unterschiede und ab welcher Programmgröße spürt man diese? Gibt es keine pauschale Antwort.> Ist der Umstieg groß? Ja

Wenn Du vorher ein wenig die Suche bemüht hättest - Du wirst sicherlich Treffer im Millionen Bereich finden, daher wird das hier auch nicht ausführlich - dann würdest Du sehen, dass WPF ein ganz anderes Entwicklungskonzept verfolgt.

WPF ist auf die Bindung der Daten via MVVM Pattern ausgelegt; Windows Forms zwingt Dich leider viel zu wenig auf Datenbindung, wobei hier eher der MVP Pattern verwendet wird.

Generell gilt aber WPF als die modernere Technologie und gilt als aktuell Empfohlen für den Desktop.
WPF lässt aber keine Cross-Platform-Usage zu.

Ansonsten verweise ich Dich einfach auf die Google Suchtrefferliste, weil das hier alles zu wiederholen, macht keinen Sinn.
Google-Suche nach windows forms vs wpf

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren

Ansonsten verweise ich Dich einfach auf die Google Suchtrefferliste, weil das hier alles zu wiederholen, macht keinen Sinn.

>

Mir geht es nicht um die Ergebnisse bei Google. Die habe ich die letzten Wochen durchgelesen.
Mir geht es um die Erfahrung der User in diesem Forum und was sie empfehlen.

Es war eine allgemeine Frage über Erfahrung und Nutzen.

Dies würde ich schon gerne diskutieren um ggf. auch andere User, welche durch die Google-Suche schonmal vorinformiert sind, Erfahrungen von direkten Anwendern zu bekomme.

2.078 Beiträge seit 2012
vor 5 Jahren

Die Fakten hat Abt ja schon genannt.

wollte ich mal allgemein Fragen, wie sich das mit Forms und WPF verhält?

"wie sich das verhält"? WPF folgt einem völlig anderen Konzept als WinForms, je mehr Du dich damit auseinander setzt, desto mehr Unterschiede wirst Du finden. Gemeinsamkeiten würde ich eher bei Control-Namen suchen, als bei irgendetwas Technischem.
Das hängt natürlich immer davon ab, wie Du das Werkzeug benutzt, WPF kann man auch wie WinForms nutzen, allerdings verschenkst Du dabei viele (wenn nicht die Meisten) Vorteile.

Ist der Umstieg groß?

Hat Abt zwar schon geschrieben, aber nochmal zu verdeutlichung: Auf jeden Fall 😄
Ein völlig anderes Konzept, andere Controls, diese "komischen" Templates, XAML als eigene Beschreibungssprache, MVVM als fast schon notwendiges Pattern, etc.
Ein bisschen erinnert mich WPF an HTML, aber auch nur wegen dem Konzept, dass man alles überall rein "stecken" kann und am Ende eine mehr oder weniger sinnvolle Ansicht bei raus kommt.

Die Arbeit mit WinForms ist ziemlich geradlinig. Du ziehst ein Control im Designer da hin, wo es sein soll, registrierst ein Event und tust im Handler etwas. Ein Button, der eine Nachricht anzeigt, ist so in ein paar Sekunden gebastelt.
Bei WPF geht das zwar auch, aber wir wollen es ja richtig machen. Dann brauchst Du ein ViewModel, einen Command (oder das viel verlinkte RelayCommand) und die eigentliche View, in XAML geschrieben. Letzteres kann auch von einem Designer generiert werden, das mag ich aber nicht so gerne. In der View braucht man passende Bindings und wenn man dann alles richtig zusammen steckt, übernimmt WPF die Kommunikation zwischen ViewModel und View komplett automatisch.

In reinen Code-Zeilen ist WPF also aufwändiger, wenn man aber weiß, wie man damit arbeitet, geht das beinahe genauso schnell. In kleinen (Papierkorb-)Projekten mag das irrelevant erscheinen, bei großen Projekten kann eine gut durchdachte Struktur auf WPF basierend sehr viel Zeit und Nerven ersparen.

Wenn Du also mich fragst: Nimm WPF.
Meiner Einschätzung nach ist es sehr viel durchdachter und dank Konzepten wie den Templates bekommst Du sehr viele Möglichkeiten, für die Du bei WinForms selber zeichnen müsstest.
Ich muss aber auch dazu sagen, dass ich nur ganz am Anfang mit WinForms gearbeitet habe und jetzt seit min. fünf Jahren nur mit WPF. Ich bin also in gewisser Weise "vorbelastet" 😄

PS:
Mich wundert's, dass Du, Abt, ASP.NET nicht erwähnt hast 😄
Auf die Zukunft und der Platformunabhängigkeit bezogen ist das vermutlich das bessere Pferd, auf das man setzen kann.
Ich persönlich bin aber kein Fan davon, schon allein, weil ich Web-Entwicklung nicht mag. Früher oder später wird aber niemand an ASP.NET vorbei kommen können.

C
31 Beiträge seit 2014
vor 5 Jahren

Am besten ist es einfach mal ein kleines Projekt mit WPF durch zu ziehen - da werden Dir schon einige Haare zu Berge stehen. Vieles sieht gleich aus, wird aber unterschiedlich gemacht. An der einen oder anderen Stelle verbringt man erst einmal eine gewisse Zeit, um zu verstehen warum es so funktioniert wie es funktioniert.

Ich persönlich finde, dass gerade die Stärke von WPF nicht wie jede andere Anwendung auszusehen gerade für mich ein Pluspunkt ist. Wenn man die Augen mal auf macht sehen die wenigsten Anwendungen die man Kaufen kann heutzutage noch wie "Win Forms" aus. Da sieht optisch alles wie Einheitsbrei aus - bei WPF hat man viele gestalterische Möglichkeiten.

Am Ende sind Endanwender auch sehr stark optisch gesteuert und sehen nicht nur den Nutzen. Da wird auch viel subjektiv geurteilt.

Ich halte es für mich so: was ich für den "Serverbetrieb" oder ähnliches programmiere mache ich mit Win Forms - da komme ich einfach schneller zum Ziel und wenn das Ding eine EDI Schnittstelle oder ähnliches ist interessiert es den Administrator nicht ob die Buttons bunt sind. Wenn ich wieder was programmiere was für Endkunden auf CD gepresst wird mache ich es mit WPF bunt.

Von daher würde ich einfach mal schauen was Deine Zielgruppe ist ... einfach mal ein Projekt damit umzusetzen und zu probieren kann nicht schaden.

5.657 Beiträge seit 2006
vor 5 Jahren

Hi Krumnix,

Mir geht es um die Erfahrung der User in diesem Forum und was sie empfehlen.

Für Windows-Desktop-Anwendungen empfehle ich, gleich mit WPF loszulegen.

Mich wundert's, dass Du, Abt, ASP.NET nicht erwähnt hast 😄
Auf die Zukunft und der Platformunabhängigkeit bezogen ist das vermutlich das bessere Pferd, auf das man setzen kann.

Es geht doch um die Anforderungen an die Anwendung. Wenn man eine Desktop-Anwendung entwickeln will, dann steht ASP.NET nicht zur Auswahl.

Weeks of programming can save you hours of planning

H
523 Beiträge seit 2008
vor 5 Jahren

Wenn man die Augen mal auf macht sehen die wenigsten Anwendungen die man Kaufen kann heutzutage noch wie "Win Forms" aus. Da sieht optisch alles wie Einheitsbrei aus - bei WPF hat man viele gestalterische Möglichkeiten.

Für WinForms gibt es mittlerweile recht gute kommerzielle Controls, die die Anwendung quasi wie eine WPF-Anwendung ausschauen lassen.

OnTopic:
@Krumnix:
Ich weiß nicht inwieweit dieser Thread möglicherweise relevant für eine Entscheidungsfindung ist. Ggf. würde ich da nochmal recherchieren.

5.657 Beiträge seit 2006
vor 5 Jahren

Wenn man die Augen mal auf macht sehen die wenigsten Anwendungen die man Kaufen kann heutzutage noch wie "Win Forms" aus. Da sieht optisch alles wie Einheitsbrei aus - bei WPF hat man viele gestalterische Möglichkeiten.

Für WinForms gibt es mittlerweile recht gute kommerzielle Controls, die die Anwendung quasi wie eine WPF-Anwendung ausschauen lassen.

Das eine hat mit dem anderen nichts zu tun. Man kann UI-technisch alles mit WPF umsetzen, was mit WinForms möglich ist, und umgekehrt. Aber die Herangehensweise ist unterschiedlich, und der Aufwand kann sich auch erheblich unterscheiden.

Erwähnenswert ist evtl. noch die Einführung in das DataBinding: [Artikel] MVVM und DataBinding

Weeks of programming can save you hours of planning

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren

Danke für eure Erfahrungen. Das bringt mich viel weiter, als Google 😃

Da ich meist Software für "Admins" schreibe, lohnt sich also aktuell der Mehraufwand noch nicht.
Sollte ich mal ein Projekt haben, dass mehr Zeit bekommt, schau ich mir mal WPF und deren Besonderheiten an. 😃

16.807 Beiträge seit 2008
vor 5 Jahren

Mir geht es nicht um die Ergebnisse bei Google. Die habe ich die letzten Wochen durchgelesen.

Es war eine allgemeine Frage über Erfahrung und Nutzen.

Du hast im Eingangspost in erster Linie nach vergleichbaren Fakten gefragt.
Nicht eine Deiner Fragen werden in üblichen Verglichen wie Blogsposts etc nicht abgedeckt.

Wenn Du konkrete Erfahrungswerte willst, dann frag danach. Das hast Du nämlich nicht 😉

Dies würde ich schon gerne diskutieren um ggf. auch andere User, welche durch die Google-Suche schonmal vorinformiert sind, Erfahrungen von direkten Anwendern zu bekomme.

Aber auch zum Thema Erfahrung mit WPF findest Du selbst hier im Forum sicher hunderte Beiträge.
Du bist schließlich nach rund 10 Jahren WPF nicht der erste mit dieser Fragestellung oder dem Diskussionsbedarf 😉

Mich wundert's, dass Du, Abt, ASP.NET nicht erwähnt hast 😄

Warte noch ein paar Monate.

Allgemein denke ich, dass Desktop-Technologien in 90% der Fälle bereits abgelöst wurden; und zwar mit HTML basierten Lösungen (Cordova, Electron...) - einfach weil man die sehr hohe UI-Performance nicht benötigt.

Siehe Beispiel hier: Krumnix fragt nach der WPF Performance - später sagt er macht kleine Admintools.
Dass kleine Admintools irgendwelche Performance-Ansprüche hätten, wäre mir neu.
Selbst Microsoft migriert alle administrativen Tools des Windows Servers mittlerweile mit Web-Technologien (project honolulu).
Das ist also ein Evaluierungspunkt, der in meinen Augen (sorry für die Deutlichkeit an dieser Stele) an den Haaren herbei gezogen ist.

Warum sollte ich solch ein Mini-Tool heute noch mit WinForms oder WPF entwickeln, und nicht zB. mit Electron oder (wenn ich mutiger bin) mit ASP.NET Blazor als Client-Lösung, die durch Cross-Platform Features eine höhere Zukunft hat?
XAML ist extrem proprietär, die Einstiegshürde ist extremst hoch und auch ein XAML Standard wird dieses Problem die nächste Dekade nicht lösen.

Wenn wirklich Performance oder Hardware-Zugriff benötigt wird, dann ist das was völlig anderes.

Wenn man eine Desktop-Anwendung entwickeln will, dann steht ASP.NET nicht zur Auswahl

Jain. Durch Blazor oder Electron.NET schon. Ja, auch heute.
Beides würde ich aber - noch - nicht wirklich für produktive Anwendungen verwenden; es ändert sich hier noch zu viel und gewisse Fragen wie Security ist noch nicht abgedeckt.

Aber es hindert mich nicht bereits heute solche kleinen Dinge mit Electron umzusetzen, die dann Cross-Platform auf allen Betriebssystemen laufen, auf mobilen Plattformen und sogar direkt im Web - und dabei einfacher zu erlernen sind wie WPF (sag ich)...

@Krumnix: das nächste Mal bitte einfach alle Fakten, was Du überhaupt entwickeln willst, auf den Tisch legen.
Weil allein mit der Frage WinForms vs. WPF schließt Du andere Technologien direkt von einer Empfehlung aus.
Und ja immer noch: Die Fragestellung im Eingang war rein sachlich auf Fakten bezogen und hätten sich sehr einfach alle mit wenigen Minuten in Google lösen lassen 👍

Im Endeffekt fragst Du gerade nach einer performanten Technologie, obwohl Du das gar nicht brauchst - Du bist vermutlich so weit weg von einer Client-Performance-Anwendung, wie der Pluto zur Sonne 😉

5.657 Beiträge seit 2006
vor 5 Jahren

es ändert sich hier noch zu viel und gewisse Fragen wie Security ist noch nicht abgedeckt.

Daher ist Electron etc. heute eben noch keine echte Alternative für Desktop-Anwendungen. Halt uns mal auf dem Laufenden, wenn sich daran etwas ändert. Interessiert mich schon, und du scheinst ja da an der Quelle der Infos zu sitzen.

Weeks of programming can save you hours of planning

16.807 Beiträge seit 2008
vor 5 Jahren

Daher ist Electron etc. heute eben noch keine echte Alternative für Desktop-Anwendungen.

Ich sehe Electron (mit TypeScript, JavaScript) als ernste Alternative an; als Enterprise-Ready - so ernst, dass ich bei Angeboten, Ausschreibungen und Technologie-Evaluieungen zunächst schaue, ob die Desktop-Anforderungen (die immer seltener werden) durch Eletron gedeckt sind und erst dann WPF in Betracht ziehe.

Wir verwenden Electron produktiv, wie andere (Slack, Microsoft Teams... ) schließlich auch.
Den hohen RAM Verbrauch sehe ich als irrelevant in den aller aller meisten Umgebungen an.

Nicht ready sehe ich Electron.NET (mit ASP.NET, C# und .NET Core) an.
https://github.com/ElectronNET/Electron.NET
Ich kenn aber beide Entwickler dahinter persönlich - und wenn die größeren Baustellen umgesetzt wurden für die Enterprise-Readiness, dann sicherlich auch als Alternative.

Blazor würde ich ebenfalls abwarten, bis da dann mal eine 2.0 raus ist.
https://github.com/aspnet/Blazor
https://blazor.net/

709 Beiträge seit 2008
vor 5 Jahren

Der Vollständigkeit halber möchte ich aber auch noch das hier zum Thema Sicherheit und Electron anmerken: http://blog.fefe.de/?ts=a406d87c

16.807 Beiträge seit 2008
vor 5 Jahren

Dann dürftest Du auch kein Outlook und kein Chrome verwenden (und übrigens auch kein .NET/ASP.NET), da es dort auch immer wieder CVE Lücken gibt - bis diese eben wieder geschlossen werden.
Der Hinweis hinkt also in meinen Augen ziemlich 😉

T
2.219 Beiträge seit 2008
vor 5 Jahren

@pinki
Und ganz unten steht übrigens auch im Artikel als letzter Satz:

We'd also like to thank the Electron team for being extremely responsive and for quickly providing a patch to the public.

Ist also schon gepatcht wurden, als die Infos offen gelegt wurden.

Auch wenn ich fefe teilweise zustimme, hätte er dies auch berücksichtigen müssen.
Jede Technik hat ihre mehr oder weniger schlimmen Sicherheitslücken und Fehler.
Auch wenn ich der technik von Electron auch noch skeptisch gegenüberstehe, würde ich diese nicht gleich verteufeln.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren

Danke für eure Erfahrung und auch das Aufzeigen von weiteren Alternativen.

War für mich doch eine sehr erfolgreiche Diskussion, mit der ich weiter arbeiten kann 😃

Electron war mir bis jetzt noch kein Begriff und hat mein Interesse geweckt. Bin mal gespannt, wie sich das weiter entwickelt.

M
368 Beiträge seit 2006
vor 5 Jahren

wie sich das weiter entwickelt. Z.B. mit Alternativen: https://entwickler.de/online/javascript/electron-vue-vuido-react-579845170.html

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren

Z.B. mit Alternativen

Sehr frisch noch. Kommt drauf an, wie lange die Entwickler sich noch Zeit lassen, bis eine stabile Freigabe erfolgt 😃

In zuviele Richtungen will ich mich jetzt auch nicht begeben.

Aber danke für die Empfehlung.

16.807 Beiträge seit 2008
vor 5 Jahren

Leider kommt alle zwei Tage irgendeine Electron Alternative auf den Entwicklermarkt - und stirbt schnell wieder.
Es ist einfach die (Open Source) Community, die eine Technologie durchsetzt. Und wenn die Community nicht da ist oder sehr klein, bleibt es in der Versenkung.

K
Krumnix Themenstarter:in
129 Beiträge seit 2018
vor 5 Jahren

Ja, das vermute ich jetzt auch mal. Daher meine Zurückhaltung und im Stillen beobachten.

Zuerst mal die Mutter allen Übels näher anschauen (WPF) und dann Electron näher erforschen. 😃