Windows-GUI: WPF oder WinRT (2015+)

94

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.

Wie vergleicht sich Windows 8 Runtime (WinRT / Windows Store-Apps / Windows 10 Universal App) mit Silverlight und WPF?

  • 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?

Alf Nielsen
quelle
5
"WPF oder WinRT?". Lernen Sie beides, WPF für den Desktop, Windows Runtime für mobile Geräte. Diese Technologien haben viele Gemeinsamkeiten, wie XAML und ein sehr ähnliches Framework. Sie können sogar Code, der beide Plattformen unterstützt, als tragbare Klassenbibliotheken schreiben.
Clemens
2
@Clemens Das letzte Bit ist etwas irreführend. Standard-.NET-Bibliotheken müssen neu erstellt / ausgerichtet werden, um mit WinRT-Apps zu arbeiten, für die für bestimmte Klassen möglicherweise Codeänderungen erforderlich sind.
BradleyDotNET
3
Windows Forms ist nicht vollständig tot, aber Sie möchten es wahrscheinlich nicht verwenden, es sei denn, Sie sind bereits damit vertraut.
Casey
2
Ihr Ziel, in der Windows-Benutzeroberfläche auf dem neuesten Stand zu bleiben, ist meiner Meinung nach ziemlich schädlich. Dies hat für den durchschnittlichen Entwickler auf lange Sicht wenig Zukunft. MS hat seine Tools für die GUI so oft geändert, während JavaScript und HTML5 weiter an Boden gewonnen haben. Wenn Sie sich beruflich weiterentwickeln, vergessen Sie alles andere. Nur wenige Ausnahmen, wenn Sie für MS oder einen Drittanbieter von GUI arbeiten oder bereit sind, den alten Code beizubehalten.
NoChance
3
Selbst MFC ist nicht ganz tot und Win32 auch nicht. Aber MFC für ein Spiel ist das, was ein Verrückter auswählen würde
Lothar

Antworten:

132

Hier gibt es viel, aber hier geht es weiter:

  • Ist Windows Forms (Winforms) tot ? Nein, es wird immer noch aktiv unterstützt. Das heißt, es ist eine schreckliche Technologie, in der man arbeiten kann (zumindest wenn man die Magie von WPF kennt)
  • Wenn Sie eine gut aussehende, gut gestaltete Desktop- App (klassisch, nicht Metro) erstellen möchten , ist WPF die Antwort in reinen .NET-Begriffen. Sie können WinRT-APIs (z. B. deren Socket-Klassen) verwenden, diese jedoch nicht unter Windows 8 ausführen. Die Benutzeroberfläche ist weiterhin WPF.
  • WinRT-Apps sind für den Windows 8 Store vorgesehen (sie sind auch im Windows 10 Store verfügbar). Sie können WPF hier oder WinRT auf dem Desktop nicht verwenden. Der Ort der Bereitstellung bestimmt also, was Sie verwenden. Sie verstehen die verfügbaren Sprachen / Technologien richtig.
  • Windows Phone 8 (jetzt veraltet) verwendet eine geänderte Laufzeit von WinRT (dies hat sich in Windows 10 geändert). Für Win8 / WP8 können Sie "Universal" -Apps verwenden, um den größten Teil des Codes zwischen einer Standard-WinRT-App und einer Windows Phone-App zu teilen .
  • Windows 10 verwendet die Universal Windows Platform (UWP), die auf .NET Core basiert. Für Windows 10 entwickelter Code kann auch auf Xbox One, Windows Phone 10 und HoloLens verwendet werden. WPF ist immer noch für "Standard" -Desktop-Apps.
  • XBox ist schwierig. XNA ist verschwunden, und Microsoft scheint sich von von der Community erstellten Inhalten für die Plattform zu entfernen. Trotzdem kann Unity3D auf XBox bereitgestellt werden, und ich glaube, dass die Standard-DirectX (C ++) -Entwicklung dafür funktioniert. Universelle Windows Platform-Apps können auch auf der Xbox One bereitgestellt werden. Dies scheint die Strategie von Microsoft für die Zukunft zu sein.

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.

BradleyDotNET
quelle
Vielen Dank für die Antwort, die ich für mein Minispiel mit XNA begonnen habe. Es tut mir leid zu hören, dass sie es entfernen werden. Aber ich freue mich darauf zu sehen, was Windows 10 uns bringen wird.
Alf Nielsen
@AlfNielsen Ich bin mir nicht sicher, wann das Ende des Supports ist, aber es scheint, dass sie es nicht so schnell aktualisieren werden.
BradleyDotNET
2
Es sieht so aus, als würde VS Unity voll unterstützen, also ein großes Lob für die Vorhersage! :)
BK
2
Die Geschwindigkeit des WPF-Renderns mit WPF-Klassen wie Visual ist für Spiele oder alles in Echtzeit schrecklich.
Flügelspieler Sendon
2
@WingerSendon Blick auf RenderTransform, Viewport3Dund dergleichen. Sie sind hardwarebeschleunigt.
BradleyDotNET
26

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).

Prateek Jain
quelle
19
Universal Apps scheinen unter Windows7 oder Windows8 nicht zu funktionieren. "Universelle Apps" sind nur für Win10-Geräte "universell".
Dragontamer5788
Xamarin ist immer noch eine eigene Sache (keine universellen Apps) und ich bin mir nicht sicher, ob sie auch auf Xbox bereitgestellt werden können.
BradleyDotNET
2
@PrateekJain: NEIN auf Lauf UWP - Anwendungen auf Windows 8: stackoverflow.com/a/30317960/199364
ToolmakerSteve
6
WinForms eignet sich immer noch hervorragend für schnelle und schmutzige GUIs - WPF ist nett, erfordert jedoch viel Boilerplate-Code (und eine steile Lernkurve), um "richtig" zu verwenden, auch ohne MVVM. Es ist schade, dass WPF keine echten RAD-Funktionen hat - und dass XAML nur so ausführlich ist .
Dai
1
Für alle Geräte meines Arsches. Es ist Microsoft Speak wieder vom Feinsten. Genau wie früher, als sie es plattformübergreifend nannten, weil es unter Windows 95 und Windows 2000 lief. Die andere Sache ist, dass ich nie möchte, dass Desktop-Apps die gleichen hässlichen Größen von Schaltflächen und insbesondere Bäumen und Listen haben, die ich für Berührungen verwenden muss. Daher kein UWP für mich
Lothar
23

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.

Tomáš Opis
quelle
3
Das ist meine Lieblingsantwort. Für kleine Apps verwende ich Windows Forms, weil es so schnell und einfach loszulegen ist. Für komplexen Produktionscode verwende ich C ++ (mit WTL) und Side-Step .NET vollständig.
Robinson
8
Für Leser, die mit WPF nicht vertraut sind, einige Klarstellungen - für grundlegende Anwendungslayouts erfordert WPF mehr oder weniger den gleichen Aufwand. Die Standard-VS WPF-Anwendungsvorlage bietet denselben Ausgangspunkt wie WinForms. MVVM ist für die Arbeit mit WPF überhaupt nicht obligatorisch, aber die Verwendung der Bindung ohne MVVM-Framework ist auch für einfache Apps einfach. WPF ist technologisch näher an WinRT und UWP. Nehmen Sie also bitte an, dass Windows Forms für nichts anderes als die Wartung älterer Anwendungen tot ist.
Auch
3
Winforms eignet sich hervorragend zum Erstellen einer neuen "Konsolen" -App. ZB eine extrem einfache Tab-Steuerung mit einer Reihe von Schaltflächen und Benutzereingaben, die einen Skin auf eine Konsolen-App setzen.
rollt
16

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.

Gareth
quelle
1
Ich gebe Ihnen, dass einige Dinge in WinForms leistungsfähiger sind. Es gibt andere Dinge (insbesondere Animationen), für die das Gegenteil gilt. Zugegeben, es wäre wahrscheinlich noch besser , direkt zu DirectX zu wechseln, aber niemand möchte dies tun, wie Sie betont haben.
BradleyDotNET
1
Nach WinRT habe ich mich entschlossen, woanders zu suchen. Meine Kunden und ich können uns nicht zu sehr auf das verlassen, was Microsoft will, da dies das Endergebnis von mir und meinen Kunden beeinflusst. Ich betrachte jetzt eine selbst gehostete Anwendung, die einen lokalen Webserver verwendet, um die Anwendungsseiten lokal für den Browser des Benutzers oder das eingebettete Browsersteuerelement in einer WinForm / WPF-App bereitzustellen. Dies vereinfacht die Entwicklung, bringt mich der plattformübergreifenden Kompatibilität näher und senkt offensichtlich die Kosten.
TheLegendaryCopyCoder
6

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.

Jeroen S.
quelle
4

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?

Jason Ching
quelle
1
Ich werde zustimmen, dass WPF eine intensive Lernkurve hat, aber sobald Sie diese überwunden haben, gibt es einfach kein Zurück mehr zu WinForms ... jemals.
Krythic
4

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:

  • Windows 10: UWP
  • Windows 8.1: WinRT oder Windows Store
  • Windows 7: WinForms

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.

Mike Johnson
quelle
Obwohl es interessant ist, einen Standpunkt zu Gamedev zu haben, verstehe ich nicht, warum Sie ein GUI-Framework für Gamedev wählen sollten, in dem Sie eine voll funktionsfähige Spiel-Engine für C # wie Unity haben. Nur wenige Spiele, die ich mit klassischer GUI gesehen habe, waren für die Ausgabe von Spieldaten (wie das Bearbeiten von Karten / Assets)
Uwy,
2
Aus dem gleichen Grund wählen sie eine Spiel-Engine: Es ist ziemlich mühsam, ein natives Fenster effektiv aus verwaltetem Code selbst zu erstellen und zu verwalten.
Mike Johnson
3

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.

Gavin Williams
quelle
8
Um meine ursprüngliche Aussage zu verdeutlichen, kann WinRT nicht zum Erstellen einer "traditionellen" Desktop-Anwendung verwendet werden. Unter anderem aus diesem Grund gibt es unzählige Gründe, WPF zu lernen (WinForms, nicht so sehr). Wenn nichts anderes, haben Sie WinRT gleichzeitig effektiv gelernt (wie ich in meiner Antwort vermerke). Darüber hinaus sind wir weit davon entfernt, dass WinRT-Apps den Markt beherrschen (insbesondere Branchen-Apps). WPF ist immer noch immens wertvoll.
BradleyDotNET
7
Wenn WinRT nicht an das Erstellen von Vollbild-Apps gebunden ist, können Sie mir dann sagen, wie Sie damit eine Fenster-App erstellen können, die auf einer tatsächlich veröffentlichten Windows-Version ausgeführt wird? Oder wie man damit eine App schreibt, die auf mehr als 10% der Windows-Computer (dh Windows 7 und XP) ausgeführt wird? Ich vermute, die meisten Entwickler möchten mehr als 10% der Windows-Benutzer ansprechen können. Bis Windows 8 oder 10 einen ernsthaften Marktanteil erreichen, wird WPF für viele Anwendungen weiterhin erforderlich sein. WinRT kann eine Laufzeitschicht sein, aber das ändert nichts an der Tatsache, dass es nicht auf viele (vollständige) Dinge zugreifen kann, die Win32 kann.
John Colanduoni
1
@JohnColanduoni wie gesagt, für jeden, der heute (14. März) startet, ist WinRT der richtige Weg, win10 war und ist seit einigen Monaten als Update kostenlos und wird noch einige Monate dauern, also ja, win10 greift nach a riesiger Marktanteil. Ja, nicht alle sind zu win10 gewechselt, aber vor ein paar Tagen haben wir herausgefunden, dass ein Flughafen in Frankreich immer noch win3.1 verwendet
John Demetriou
3
@GavinWilliams Okay, wo sind Ihre Statistiken, mit denen Windows 10 in einem Marktsegment einen spürbaren Marktanteil erreicht? Wollen Sie damit sagen, dass die Mods Ihren Kommentar mit einem Link zu Ihrer Quelle entfernt haben, aber Sie können diesen hier veröffentlichen? Das kaufe ich nicht. Ich bin damit einverstanden, dass XP keine Unterstützung wert ist, aber universelle Windows 10-Apps unterstützen nicht einmal Windows 8.1, geschweige denn Windows 7. Die Einführung ist nirgends erforderlich, um Windows Universal zu rechtfertigen, und sie verlangsamt sich .
John Colanduoni
3
@GavinWilliams Okay, lassen Sie uns ignorieren, dass 30% viel weniger als 97% sind (die Unterstützung, die Sie erhalten würden, wenn Sie WPF verwenden würden), und dass diese Daten nur für Videospielprogrammierer nützlich sind. Bei Videospielen ist es recht einfach, beide Ziele zu erreichen. Wenn Sie nichts wirklich Triviales tun, möchten Sie DirectX / OpenGL verwenden, was bedeutet, dass Sie es nur in einem Fenster / Vollbild hosten müssen. Wenn Sie diese nicht verwenden möchten, möchten Sie wirklich WPF, da die Benutzeroberfläche von WinRT das Zeichnen im Sofortmodus ohne gehostetes DirectX / OpenGL nicht zulässt (wie dies bei WPF der Fall ist). Was ist also mit WinRT, das eine Reduzierung der Marktgröße um 70% rechtfertigt?
John Colanduoni
1

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.

Khamis
quelle
3
Worüber redest du? Ja, das ist eine gute Wahl, wenn Sie eine Web-App erstellen möchten. Wenn Sie eine Desktop-App erstellen möchten, ist dies nicht der Fall. Sie könnten Katana verwenden und lokal gehostetes WebApi haben und eine Desktop-App erstellen, was diese Antwort vermutlich relevanter machen würde.
Casey
1
OP fragte nach Windows GUI und WPF oder Winrt - nicht nach Web-Apps.
Ezaspi
6
Ich persönlich finde es auch viel schwieriger, mit diesen Technologien zu arbeiten (unverständliches Layoutsystem, keine Überprüfung des Codes zur Kompilierungszeit usw.). Der Desktop ist noch nicht tot :)
BradleyDotNET
1
Ich stimme zu, HTML ist die universelle Benutzeroberfläche und sollte auch für den Desktop gelten. Ich denke, wir müssen all diese unterschiedlichen Rahmenbedingungen vereinfachen und aufhören, immer mehr und mehr und mehr einzuführen. Das meiste davon wird nicht benötigt. Lernen Sie einfach HTML und ASP und hosten Sie Ihre Website dann selbst in einer WinForm-App. Die WinForm-App enthält Ihre Webserver- und Webbrowser-Steuerung. Das Ergebnis ist, Sie sparen Zeit, Sie konzentrieren sich darauf, eine Sprache und Technologie zu beherrschen, Sie entwickeln schneller, Sie sparen Ihren Kunden Geld, Ihre Apps sind zukunftssicher und weitaus portabler.
TheLegendaryCopyCoder