WebAssembly: Uno Platform 3.9 unterstützt .NET 6 Mobile, WinUI und XAML-Trimming

Das Release der Plattform für systemübergreifende Single-Codebase-Anwendungen soll unter anderem mit XAML-Trimming die Größe von Wasm-Apps deutlich reduzieren.

Lesezeit: 5 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: metamorworks/Shutterstock.com)

Von
  • Silke Hahn

Das kanadische Projekt Uno hat Version 3.9 seiner C#/XAML-Plattform veröffentlicht. Die aktuelle Version von Uno Platform unterstützt .NET 6 für iOS, Android, Mac Catalyst sowie macOS und kann Templates aus Visual Studio 2022 verarbeiten.

Die Version 3.9 ist zudem mit dem Software Development Kit für Windows-Anwendungen (Windows App SDK) in Version 0.8.1 kompatibel und bietet mit einer als XAML-Trimming bezeichneten Technik Entwicklerinnen und Entwicklern die Möglichkeit, die Größe von WebAssembly-Apps zu reduzieren, laut Blogeintrag auf der Uno-Website um etwa die Hälfte.

Uno Platform verfolgt laut Herausgebern unter anderem das Ziel, mit WinUI erstellte Anwendungen auf sämtlichen Plattformen zum Laufen zu bringen. Das WinUI 3 ist mittlerweile Bestandteil des zuvor als "Project Reunion" bezeichneten Windows App SDK – zur kürzlich erfolgten Umbenennung bezieht Microsoft in der Dokumentation zum SDK Stellung. Mit dem Wechsel zum künftigen .NET 6 bezweckt das Entwicklungsteam, dass Projekte sich ähnlich wie bei üblichen SDKs für die meisten Zielplattformen anpassen lassen. Eine Einschränkung gibt es beim Projekt Uno: Die Universal Windows Platform bleibt zunächst außen vor.

Um das kommende .NET 6 auf mobilen Geräten und Betriebssystemen wie iOS und Android sowie das AppKit für macOS und Catalyst zu ermöglichen, mussten die Uno-Entwickler dem Blogeintrag zufolge zunächst sicherstellen, dass sowohl Xamarin- als auch .NET-6-Targets ansprechbar sind. Die Neuerung ist entsprechend für Uno.UI- und Uno.WinUI-Pakete verfügbar. Da .NET 6 sich zurzeit noch in der Preview-Phase befindet, ist auch die Unterstützung dafür seitens Uno in Entwicklung.

Dein Einstieg in Wasm: Konferenz
Wasm-Konferenz von Heise: WebAssembly 2021 am 31. August 2021, der Game Changer auch jenseits des Web

Jérôme Laban, der CTO von Uno Platform, spricht am 31. August 2021 auf der Wasm-Konferenz von Heise. Sein Vortrag ist ein Werkstatteinblick und führt vor, wie sich WebAssembly-Apps mit Uno bauen lassen. Die Online-Konferenz vermittelt konzeptuelles Wissen und praktisches Know-how direkt von Insidern aus dem Kern der Wasm-Entwicklung und von praxiserfahrenen Anwender:innen.

Bei der betterCode Wasm 2021 erhältst du Antwort auf zahlreiche Fragen:

  • Was ist eigentlich WebAssembly?
  • Wie verwende ich Wasm zusammen mit meiner Programmiersprache oder neuen Sprachen wie Rust?
  • Was bringt mir Wasm bei Containern oder bei Serverless-Anwendungen?
  • Was leistet Wasm im Frontend und im Backend?
  • Wie hilft Wasm mir dabei, meine Projekte voranzubringen?

Flankierend richten die Veranstalter zwei Hands-on-Workshops aus (ganztags online):

Konferenztickets kosten im Frühbuchertarif 149 Euro, Workshop-Tickets sind für 449,- Euro erhältlich (beides zzgl. MwSt.). Weiterführende Informationen finden sich auf der Konferenzwebsite.

Mit dem aktuellen Release von Uno lassen sich Templates in der Preview-2-Version von Visual Studio 2022 einsetzen, die Entwicklerinnen und Entwicklern einen laut Herausgebern reibungslosen Betrieb eigener Uno-Plattform-Projekte in Visual Studio ermöglichen. Wer Visual Studio nutzen möchte, kann Uno mittels Extension aufrüsten. Unter den Templates befinden sich auch zwei, die .NET 6 unterstützen, wie dem Blogeintrag zu entnehmen ist. Mehr Informationen zu den Visual-Studio-Templates finden sich in der Uno-Dokumentation. Der Visual-Studio-Bereich des Uno-Teams bei GitHub beschreibt ausführlicher, wie Interessierte bereits jetzt mit .NET-6-Projekten experimentieren können.

Das neu angekündigte XAML-Trimming soll es Entwicklerinnen und Entwicklern ermöglichen, die unkomprimierte Größe einer ahead of time (AOT) kompilierten WebAssembly-Anwendung um etwa 50 Prozent zu reduzieren. Unter der Haube erzeugt Uno aus XAML C#-Code, der sich wiederum in den nativen Code der Zielplattform übersetzen lässt. Beim herkömmlichen Trimming über statische Referenzen lässt sich bereits unnötiger Code entfernen. XAML hingegen nutzt String-basiertes Switching, und die Switch-Case-Patterns lassen sich vom Linker nicht auffinden, weshalb der Code auf dem herkömmlichen Weg nicht reduzierbar ist.

Uno Platform 3.9: Payload von Wasm-Apps mit und ohne XAML-Trimming im Vergleich

(Bild: Uno Platform)

Das neue XAML-Trimming-Tool nutzt einen .NET-6-Linker, der genauer bestimmen soll, welche Teile des Codes aktiv genutzt werden. Dabei identifiziert er, welche Stile und Steuerungen in einer Anwendung nicht zum Zuge kommen und entbehrlich sind. Wer sich das Feature genauer anschauen möchte, kann es mit folgendem Befehl eigenen WebAssembly-Projekten hinzufügen:

<PropertyGroup>
   <UnoXamlResourcesTrimming>true</UnoXamlResourcesTrimming>
</PropertyGroup>

Weitere Details zum aktuellen Release lassen sich dem Blogeintrag des Uno-Teams entnehmen. Das Tool ist kostenlos und steht als Open-Source-Software unter der Apache-2.0-Lizenz, Interessierte finden den Code auf GitHub. Wer Uno Platform bereits einsetzt, kann die verwendete Version über den Paketmanager NuGet in Visual Studio auf Version 3.9 aktualisieren.

Uno Platform gilt den Herausgebern zufolge als die derzeit einzige Plattform zum Erstellen von Single-Codebase-Anwendungen für Windows, Web/WebAssembly (Wasm), iOS, macOS, Android und Linux. Die Plattform ermöglicht das Betreiben von C# und XAML auf beinahe jeglicher Zielplattform, Entwicklerinnen und Entwickler behalten dabei laut Herausgebern die Kontrolle über jeden Pixel. Uno unterstützt Fluent-, Material- und Cupertino-Design-Systeme, zudem lassen sich damit zahlreiche UWP-APIs wie Windows.UI.XAML implementieren.

Mit der Plattform sollen Entwicklungsteams Anwendungen, die fast vollständig mit dem UWP- und WinUI-Tooling von Windows in Visual Studio erstellt sind (wie beispielsweise mit XAML Hot Reload oder C# Edit and Continue), für den Betrieb mittels iOS, Android, macOS und WebAssembly einsetzen können. Das Ziel des Projekts ist laut Beschreibung auf GitHub, dass UWP- sowie WinUI-Anwendungen auf anderen Plattformen mit der dortigen nativen Performance laufen sollen.

(sih)