Ich versuche, einen Überblick über die verschiedenen Technologien zu erhalten, die beim Erstellen von GUIs in der Windows-Welt verwendet werden sollen.
Für den Kontext baue ich ein kleines 2D-Plattform-Multiplayer-Spiel. (Nur zum Lernen ..)
Mein Lehrer sagt, dass er der Meinung ist, dass WPF der richtige Weg ist, aber es scheint, dass er es nur mit Windows Forms vergleicht.
Mein Verständnis ist, dass Windows Forms hier im Jahr 2015 total tot ist?
In diesen anderen Stackover-Fragen heißt es, WinRT + XAML sei für das Erstellen von Metro-GUIs gedacht (Windows 8-Kacheln!), Und es scheint, dass WPF in Windows 7/8 nur für Desktops verwendet wird und in enger Beziehung zu Silverlight steht.
- Auf dem Desktop befinden sich die alten Apps (rot. WFP).
- Die neue Klasse von Anwendungen, Metro-Anwendungen, kann auf verschiedene Arten erstellt werden, unter anderem durch VB.NET, C # oder C ++. Diese drei Sprachoptionen können XAML zum Erstellen der Benutzeroberfläche verwenden. Die Alternative besteht darin, JavaScript / HTML5 / CSS für die Entwicklung der Benutzeroberfläche und des Anwendungscodes zu verwenden.
Meine eigentliche Frage lautet: Gibt es nicht EINEN guten Weg, um GUIs in der Fensterwelt zu erstellen?
Und wenn nicht, welche Technologien sollte man unter Windows 7, Windows 8 (Desktop und Metro), Windows Phone (und Windows 10!) Und sogar unter X-Box verwenden?
Ist es mit verschiedenen Technologien zu vergleichen?
Was ist Ihrer Meinung nach das Richtige, um Zeit zu investieren?
quelle
Antworten:
Hier gibt es viel, aber hier geht es weiter:
Was die Zeit angeht, hängt das davon ab, auf was Sie abzielen :). Das Erlernen von WPF / UWP + XAML bietet Ihnen viele Vorteile, wenn Sie in der .NET-GUI-Entwicklung "auf dem neuesten Stand" bleiben möchten. WPF bietet die meisten Funktionen. Wenn Sie also dort beginnen, müssen Sie nur Problemumgehungen für das finden, was in UWP (oder einer anderen XAML-basierten Technologie) fehlt.
Stellen Sie in diesem Fall sicher, dass Sie das MVVM-Muster (Model-View-View Model) kennen. Es funktioniert sehr gut mit den XAML-basierten Technologien und ermöglicht es Ihnen, eine Menge Logik zwischen Ihren WPF- und UWP-Anwendungen zu teilen. Dieselbe Logik kann auch verwendet werden, wenn Sie eventuell Xamarin-Anwendungen für iOS / Android usw. entwickeln.
Beachten Sie, dass Sie für eine echte Spieleentwicklung ein aktuelles Spiel-Framework benötigen (wie Unity3D oder sogar XNA). Sie können dies in WPF tun, und das ist eine bessere Wahl als Winforms, aber keines ist wirklich für Spiele gedacht.
quelle
RenderTransform
,Viewport3D
und dergleichen. Sie sind hardwarebeschleunigt.Es ist ein ziemlich alter Thread, aber als ich über Google (aus Interesse) darauf gestoßen bin, könnte vielleicht auch jemand anderes hierher gelangen. Diese Frage wird von neuen Programmierern immer wieder gestellt. Daher möchte ich auch einige Dinge beantworten, nachdem Windows 10 offiziell veröffentlicht wurde.
Erstens sollte man nicht mehr mit Windows Forms beginnen. Derzeit ist es die ausgereifteste Technologie, aber Windows Forms wird nicht weiterentwickelt. Es befindet sich erst in der Wartungsphase. WPF wird aktiv entwickelt (zuletzt gelesen). Jetzt müssen die Windows Universal Apps (WinRT one) nicht mehr im Vollbildmodus verwendet werden und können wie andere Desktop-Apps (WPF & WinForms) im Fenstermodus verwendet werden. Dies erhöht die Benutzerfreundlichkeit auf Nicht-Tablet-Computern erheblich. Ich glaube, dass dies auch für Desktop-Apps die Zukunft sein wird. Obwohl WPF-Software die traditionellen Desktop-Apps sind (ohne Berechtigungen, nur UAC). Unabhängig davon, ob Sie die Entwicklung von WPF oder WinRT (mit .Net) lernen, werden Sie am Ende beides lernen. Beide sind XAML + C # (oder eine andere .NET-Sprache). Ich habe gerade WPF gelernt, als WinRT mit Windows 8 herauskam. Ich habe mich wie zu Hause gefühlt, nur wenige kleine Veränderungen, an die man sich sehr bald gewöhnt. Ich bin mir jedoch nicht sicher über das MVVM-Szenario (Datenbindung) in WinRT. Ich lerne diesen Aspekt von WPF immer noch selbst.
Fenster 10 wurde gerade gestartet. Windows 8 / 8.1 war nicht so erfolgreich wie Windows 7. Wenn Sie also eine App erstellen möchten, die ein breiteres Publikum hat, sollten Sie sich zunächst für WPF entscheiden. Aber in naher Zukunft wird WinRT der richtige Weg sein.
Für Ihre Frage "Welche Technologien sollten unter Windows
7, Windows 8 (Desktop und Metro), Windows Phone (und Windows 10!) Und sogar x-box verwendet werden?" Lautet die einzige Antwort Windows Universal Apps. Dies ist der genaue Grund, warum dieses Framework entwickelt wurde. Eine Technologie zur Entwicklung von Apps für alle Geräte. Desktop, Tablet, Telefone (einschließlich Android mit Xamarin im Lieferumfang von Visual Studio 2015), Xbox und IoT (Internet of Things).quelle
Ich werde versuchen, nur eine Ihrer Fragen zu beantworten:
Ist Windows Forms total tot?
Nein, die Windows Forms-Technologie ist nicht tot. Ich werde dir sagen warum. WPF und XAML sind sehr umfassende und komplexe Technologien und Sie können eine sehr schöne Benutzeroberfläche erstellen. Aber! Diese Technologie erfordert tiefes Wissen. Für grundlegende Layouts benötigen Sie nicht so viel Wissen, aber für einige fortgeschrittene Layouts sollten Sie über fundierte Kenntnisse verfügen. Als ich mit dieser Technologie begann und viel Zeit damit verbrachte, einige Tipps bei Google zu suchen. Wenn ich also einige einfache Formulare für Benutzereingaben benötige, wähle ich immer die Windows Forms-Technologie, die sehr einfach und unkompliziert ist. Dies ist auch der Grund, warum diese Technologie auf der Welt sehr erfolgreich war. Wenn Sie mit WPF beginnen, müssen Sie auch wissen, was MVVM-Entwurfsmuster ist, und einige nicht erfahrene Programmierer sind damit verwechselt.
quelle
Es ist jetzt April 2016 und es gibt noch keine klare Antwort darauf. Wir entwickeln eine sehr moderne Echtzeit-Desktop-Anwendung zur Leistungsüberwachung, die mehrere Diagramme und Anzeigen rendern muss, die mit Text und verschiedenen anderen Grafiken gemischt sind. Unsere Anwendung ist C #, WPF mit .NET Framework 4.5.2, aber wir schreiben noch einige Komponenten mit WinForms und GDI +, um eine akzeptable Leistung zu erzielen. Wir haben es mit WPF einfach nicht erreicht. Wir haben sogar einige Anzeigen in der Anwendung mit DirectX entwickelt, aber das erhöht die Komplexität, die nur wenige Mitglieder des Teams unterstützen können. Die Einfachheit und Geschwindigkeit, die wir durch das Hosten eines WinForms-Displays in WPF erhalten können, und die Geschwindigkeit von GDI + geben uns das, was wir zum Preis der reinen View / ViewModel-Struktur benötigen, und müssen uns mit verschiedenen Luftraumproblemen befassen. Unsere Anwendung ist ziemlich spezialisiert und ich würde WinForms gerne ganz loswerden, aber leider ist dies in unserem Fall noch nicht möglich. Für reine Leistung müssen Sie entweder DirectX oder WinForms verwenden.
quelle
Meine zwei Cent ... Wenn Sie echte universelle Apps möchten, dh Programme, die auf JEDEM Desktop-Betriebssystem einschließlich Windows ausgeführt werden können, ist WinForms immer noch der richtige Weg. Stellen Sie einfach sicher, dass Sie CLR-kompatibel bleiben und über Mono auf Mac und Linux bereitstellen können. Ein großer Vorteil. XAML mag cool sein, wird aber nicht auf andere Betriebssysteme portiert.
Ich persönlich finde das UWP-Geschäftsmodell mit Sandbox (Treibsand?) Erschreckend. es wirkt der Offenheit entgegen, für die Windows von Anfang an stand.
quelle
Ich arbeite seit über 10 Jahren mit Microsoft-Technologien. Das Wichtigste, was ich gelernt habe, ist, nicht nur zuzuhören, was Microsoft Ihnen anbietet. Wenn Microsoft sagt, dass dies die Zukunft ist, besteht eine 50% ige Chance, dass etwas schief geht. Microsoft wird mit Sicherheit das Beste tun, um für die Produkte zu werben, in die sie investiert haben, aber das bedeutet nicht, dass Sie folgen sollten. Sehen Sie, was mit WCF und Silverlight passiert.
Obwohl WPF eine sehr schöne Lernplattform ist, hat es eine enorme Lernkurve. Ich glaube nicht, dass Entwickler mit weniger als 5 Jahren Programmiererfahrung WPF richtig machen können.
Wenn Sie dem MVVM-Muster folgen, werden Sie feststellen, dass es in WPF sehr schwierig werden kann, in WinForm etwas relativ Einfaches zu tun. Färben Sie eine Zelle nach einem Update basierend auf einer bestimmten Bedingung oder scrollen Sie durch eine Zeile in der Ansicht und markieren Sie sie.
Natürlich können Sie sagen, dass Sie MVVM nicht durchführen müssen. Setzen Sie einfach Ihren Code in den Code dahinter und lassen Sie ihn funktionieren. Ja, das wird funktionieren, aber wozu dient WPF? Warum nicht einfach Win Form verwenden?
quelle
Dies ist ein alter Thread, aber ein wichtiger mit dem aktuellen Fortschritt des .NET-Frameworks, den C # -Funktionen und dem verstärkten Fokus auf C # als Wahl für die Spieleentwicklung.
WPF wird ehrlich gesagt fast nie als AC # -Spielplattform ausgewählt. WPF-Luftraumprobleme haben die Leute ziemlich schnell abgeschreckt. Ich denke nicht, dass viele (wenn überhaupt) Haupttitel oder Mainstream-Game-Engines WPF aus diesem Grund als Zielplattform unterstützen. WPF ist jedoch eine großartige Plattform für Spielstarter!
WinForms, das sich jetzt im Wartungsmodus befindet, wird auch in den kommenden Jahren eine gültige Wahl sein. Es ist erprobt und stabil. Nach dem, was ich gesehen habe, ist WinForms auch 2017 noch die am häufigsten verwendete Plattform für die Entwicklung von c # -basierten Spielen.
Wenn Sie sich die Daten der Steam Hardware Survey ansehen, können Sie feststellen, dass Windows 10 64-Bit zum Zeitpunkt der Erstellung dieser Antwort (Juli 2017) mit einem Marktanteil von 50% die dominierende PC-Gaming-Plattform ist, gefolgt von Windows 7 64-Bit mit 32%. und Windows 8.1 64-Bit bei fast 7%. Der Marktanteil aller anderen Betriebssystemplattformen ist so gering, dass es sich kaum lohnt, etwas anderes als diese drei in Betracht zu ziehen.
Da dies der aktuelle Stand der PC-Spiele ist, ist WinForms der häufigste Nenner für alle drei Top-PC-Plattformen. Mit Blick auf die Zukunft wird UWP die beste Zielplattform für die Entwicklung von C # -Spielen sein, da Windows 7 und 8 erhebliche Marktanteile an Windows 10 verlieren, sofern nicht eine neue Plattform hinzukommt, die diese ersetzt. Das liegt also nur an den Zahlen.
Wenn die Auswahl auf der Grundlage der besten Kompatibilität pro Betriebssystemplattform erfolgt, anstatt den maximalen Marktanteil zu unterstützen, sind die Auswahl eher wie folgt:
Die meisten anderen Antworten beziehen sich auf die Standardentwicklung von Windows-Anwendungen, aber die Spieleentwicklung ist ein ganz anderer Bereich, und verschiedene Faktoren beeinflussen Ihre Auswahl, wie z. B. das Zielbetriebssystem und die Auswahl der Grafik-API oder der Spiele-Engine.
quelle
WinRT ist schon lange auf dem Desktop, ich schreibe WinRT, das auf meinem Deskop läuft. Unter Windows 10 unterstützen diese Anwendungen nicht angedockte Speicherorte (Fenster, wie Sie sie traditionell kennen).
Ich würde WinForms oder WPF niemandem empfehlen, der heute anfängt. Sie sollten in erster Linie WinRT / XAML lernen. Und lernen Sie Win32 / .net nach Bedarf, je nach Sprache Ihrer Wahl.
"Sie sagen, WinRT + XAML ist für das Erstellen von Metro-GUI (Windows 8-Kacheln!)" - Dies ist eine solche Überabstraktion, dass sie nutzlos ist. WinRT ist eine Laufzeit, wie Win32, es ist nicht nur für die GUI, also ist das, was "sie sagen", eine vollständige BS. XAML ist eine UI-Ebene (ähnlich wie XAML in WPF), aber zu sagen, dass es sich um eine Metro-GUI handelt, ist ebenfalls falsch. Es gibt keine Metro-GUI mehr. XAML ist die Windows-UI-Ebene. Und "Windows 8 Kacheln Sache!" ist Ausdruck der Tunnelvision bestimmter Menschen. Es wäre so, als würde ich sagen, dass Win32 eine Startmenüsache ist. Sie können sehen, wie lächerlich diese Aussage ist.
quelle
Ich bin vor einem Jahr auf diese Frage gestoßen. Ich kam zu dem Schluss, dass XAML, WPF oder WinRT zunächst die richtige Entwicklungsumgebung sind.
Ich empfehle dringend, .NET Framework für die Datenschicht (einschließlich Web Services und RESTful Layer (JSON)) und reines HTML5 / CSS3 und Javascript für Ihre Webpräsentationsschicht zu verwenden.
In Windows 10 können Sie jede Webanwendung sofort als Metro-Anwendung integrieren.
WinRT, XAML, WPF und ähnliche MS-Inhalte laufen nur unter Windows und weisen viele Einschränkungen auf.
Nach einem Jahr freue ich mich immer noch sehr über meine Entscheidung, WinRT oder XAML nicht für mein neues Projekt zu verwenden.
quelle