Zukunftssichere .NET-Anwendungsentwicklung mit der Uno-Plattform

Wenn Sie Zeit damit verbringen, Windows-Entwicklern zuzuhören und mit ihnen zu sprechen, werden Sie feststellen, dass die Richtung der Plattform sehr verwirrend und frustrierend ist, insbesondere in Bezug auf .NET und UWP (Universal Windows Platform). Microsoft versucht, eine Grenze zwischen den Unterschieden zwischen UWP und älteren Windows-SDKs zu ziehen, während versucht wird, alle mit der Ankündigung von Project Reunion für Build 2020 in eine .NET 5-Zukunft zu führen. Die Bereitstellung einer einheitlichen Plattform wird jedoch noch einige Zeit in Anspruch nehmen.

Vieles davon ist darauf zurückzuführen, wie Windows-Plattform-Updates in der Vergangenheit bereitgestellt wurden: gekoppelt an Betriebssystemversionen. Project Reunion baut auf der Arbeit mit den Komponenten der WinUI-Benutzeroberfläche auf, entkoppelt sie von den zugrunde liegenden Betriebssystemen und ermöglicht es der Entwicklerplattform, sich viel schneller als zuvor zu entwickeln.

Aufbauend auf einem Open-Source-Ansatz für die Plattform bieten sich mehr Möglichkeiten, das .NET-Entwicklungsmodell (und Ihren Code) auf so viele Plattformen wie möglich zu übertragen. Ein Beispiel dafür ist die WinUI-Implementierung der Uno Platform, die kürzlich ihre dritte Hauptversion herausgebracht hat.

Einführung in die Uno Platform 3.0

Wenn Sie sich die Uno-Plattform noch nicht angesehen haben, ist es vielleicht am einfachsten, sie als Alternative zu Xamarin zu betrachten, mit der Sie .NET-Code erstellen können, der unter iOS, Android, macOS und im Web ausgeführt wird. Ich habe bereits über Uno geschrieben, um vertraute Benutzeroberflächen über das Web mithilfe von WinUI mit WebAssembly und dem Blazor-Entwicklungsframework von Microsoft bereitzustellen.

Uno Platform 3.0 wird entwickelt, um WinUI 3.0 neben WinUI 2.0 zu unterstützen. Auf diese Weise können Sie neue und aktuelle Steuerelemente mischen und anpassen. Dieser Ansatz sollte neben der schrittweisen Einführung von WinUI 3.0 und den Project Reunion-APIs auf Systemebene gut funktionieren.

In Uno gibt es viel zu mögen, vor allem, dass es wenig bis gar keine Lernkurve gibt. Code kann in Ihrer bevorzugten IDE erstellt werden und vorhandene Tools und Frameworks verwenden. Dies bietet eine gemeinsame UI-Ebene für alle Ihre Codeversionen. Sie müssen C # und XAML nur einmal schreiben, wobei der WinUI-Code direkt unter Windows und über Uno auf anderen Plattformen ausgeführt wird. Er baut auf den nativen Tools von Xamarin für iOS, macOS und Android auf und verwendet die Mono-WASM-Implementierung auf dem Netz.

Verwenden von Uno, um .NET-Apps auf macOS zu bringen

Unter der Haube baut die macOS-Implementierung von Uno auf den Ähnlichkeiten zwischen dem AppKit von macOS und dem UIKit von iOS auf. Auf diese Weise kann das Entwicklungsteam die vorhandenen iOS-Steuerungsimplementierungen veröffentlichen. Obwohl dies funktioniert, weisen einige Steuerelemente immer noch Probleme auf. Es lohnt sich daher, zu experimentieren, bevor Sie Code für Ihre Benutzer bereitstellen. Trotzdem ist es eine effektive Möglichkeit, vorhandene .NET-Apps von Windows auf macOS zu bringen. Durch den Aufbau auf MacOS-Kernbibliotheken sollte Uno hoffentlich zulassen, dass Ihr Code auf dem kürzlich angekündigten ARM-basierten Apple-Silizium ausgeführt wird.

Die Mac-Unterstützung in Uno ist relativ neu und wird im Mai 2020 mit einer Neuimplementierung der Windows Calculator-App unter macOS gestartet und im Apple MacOS Store veröffentlicht. Zum Erstellen einer macOS-Version Ihres vorhandenen Codes müssen Sie eine Reihe neuer Uno-Vorlagen und das Windows .NET-Befehlszeilentool verwenden. Nachdem Sie die neuen Vorlagen für Uno 2.3 oder 3.0 installiert haben, können Sie ein App-Gerüst für eine macOS-Anwendung mit demselben Namen wie das Projekt erstellen, auf das Sie abzielen möchten.

Sie können dieses Projekt dann in denselben Ordner wie die übrigen Anwendungsdateien verschieben und das neue Projekt einer vorhandenen Visual Studio-Lösung hinzufügen. Kompilieren Sie Ihren Code für macOS mit Visual Studio für Mac und konfigurieren Sie die iPhone-Simulatoreinstellungen so, dass sie auf Ihr MacOS-Entwicklungsgerät abzielen.

Da Sie Visual Studio für Mac nicht für Windows WinUI-Apps verwenden können, empfiehlt es sich, Git oder eine ähnliche Quellcodeverwaltungsplattform für Ihre Komplettlösung zu verwenden, damit Sie Codeänderungen für MacOS und Windows verwalten können. Wenn Sie an einer WebAssembly-Version Ihrer App arbeiten, verwenden Sie Visual Studio Code, um sie mit den Debugger-Erweiterungen C # und JavaScript zu erstellen. Die MacOS-Unterstützung ist sowohl in Uno 2.4 als auch in 3.0 verfügbar. Die neueste Version demonstriert eine WinUI-basierte plattformübergreifende Video-Player-Anwendung, die in allen wichtigen App Stores verfügbar ist.

Verwenden von WinUI 3.0 in Uno

Wenn Sie mit WinUI 3.0 arbeiten möchten, müssen Sie die neueste Version 3.0 von Uno verwenden. Verwenden Sie erneut die .NET-Vorlagen der Uno-Plattform, um ein Gerüst für Ihren Code einzurichten. Wenn Sie vorhandenen Code auf WinUI 3.0 verschieben, müssen Sie den von Ihnen verwendeten Namespace sowohl für die Microsoft-Steuerelemente als auch für Ihren Uno-Code ändern. Dies ist mit den in Visual Studio integrierten Refactoring-Tools recht einfach.

Ein interessanter Aspekt der Uno-Plattform ist die Unterstützung von Dual-Screen-Geräten. Wenn Sie vorhandenen Code in Uno übernehmen und die Steuerelemente für zwei Bildschirme hinzufügen, sollten Sie in der Lage sein, Apps von Windows mit minimalen Änderungen auf das kommende Android-basierte Surface Duo zu portieren. Da Microsoft mobile Anwendungen mit zwei Bildschirmen priorisiert und mit Google zusammenarbeitet, um die Unterstützung für kommende Android-Versionen zu verbessern, werden Tools wie Uno ein wichtiger Weg sein, um vorhandene Erfahrungen mit großen Bildschirmen und Tablets von Windows auf faltbare Android-Hardware mit zwei Bildschirmen zu übertragen .

Uno Platform und die Zukunft der .NET-Anwendungsentwicklung

Es ist klar, dass Microsoft versucht, Unklarheiten beim Erstellen von Anwendungen im .NET-Ökosystem zu beseitigen, indem WinUI und Project Reunion verwendet werden, um die dringend benötigte Klarheit über die Zukunft zu schaffen. Aber so schnell Microsoft verspricht, dass sie geliefert werden, sind sie für viele Entwickler wahrscheinlich immer noch zu langsam. Sowohl die Uno-Plattform als auch die MAUI von Xamarin bieten eine Möglichkeit, zusätzlich zu Ihrem vorhandenen .NET-Code schneller auf diese Technologien zuzugreifen.

Durch das Hinzufügen von MacOS- und Web-UI-Unterstützung zu .NET scheint die Uno-Plattform eine bessere Wahl zu sein, um so viele Benutzer wie möglich mit möglichst wenig Codeänderung anzusprechen. Dies ist ein Weg in die .NET-Zukunft, der viel Entwicklungszeit sparen und die Supportlast auf ein Minimum beschränken sollte.

Die Verwendung von Uno sollte Ihren vorhandenen .NET-Code auch auf andere Weise zukunftssicher machen. WebAssembly- und eigenständige WASI-Anwendungen (WebAssembly System Interface) im Browser sollten den Prozess vereinfachen, mit dem Sie Ihren Code auf eine neue Generation von Edge-Hardware übertragen können, insbesondere auf Geräte mit kleinem Formfaktor und kleinem Bildschirm, die auf ARM und anderen Prozessoren mit geringem Stromverbrauch basieren.