C# (.NET) unterstützt jetzt eine neue Plattform: Wichtige Änderungen und Perspektiven
Microsoft erweitert die Grenzen des .NET-Ökosystems weiterhin aktiv. Im Rahmen des letzten Updates gab das Entwicklungsteam die Hinzufügung der Unterstützung einer neuen Plattform für die Sprache C# bekannt. Diese Entscheidung eröffnet Programmierern zusätzliche Möglichkeiten zur Erstellung moderner Anwendungen, ohne auf traditionelle Laufzeitumgebungen beschränkt zu sein.
Bei der neuen Plattform handelt es sich um das WebAssembly System Interface (WASI). Zuvor unterstützte .NET bereits WebAssembly für Browser, aber nun ermöglicht die .NET 8+-Laufzeitumgebung die Ausführung von C#-Code außerhalb des Browsers – auf Servern, Edge-Geräten und in Cloud-Umgebungen über WASI. Dies ist ein Schritt in Richtung echter Plattformunabhängigkeit, bei der derselbe Code unter Windows, Linux, macOS und sogar in isolierten Sandbox-Umgebungen ausgeführt werden kann.
Was bedeutet das für Entwickler?
Die Unterstützung von WASI in .NET ist nicht nur eine technische Neuerung. Sie löst mehrere grundlegende Aufgaben:
- Vielseitigkeit: C#-Anwendungen können jetzt in Umgebungen ausgeführt werden, in denen zuvor Python, Rust oder Go erforderlich waren – zum Beispiel in Cloud-Funktionen (Serverless) oder IoT-Geräten.
- Sicherheit: WASI bietet eine strenge Isolierung (Sandbox), die für Mehrbenutzerdienste und die Ausführung von nicht verifiziertem Code entscheidend ist.
- Leistung: Dank des nativen AOT-Compilers (Ahead-of-Time) in .NET 8 starten C#-Anwendungen unter WASI praktisch sofort, ohne Verzögerungen durch JIT-Kompilierung.
Wie funktioniert das in der Praxis?
Microsoft hat eine Vorabversion von dotnet wasi-experimental veröffentlicht – einem Paket, das die Kompilierung von C#-Projekten in WASI-Module ermöglicht. Der Prozess ist einfach:
- Installieren Sie einfach das .NET 8 SDK und fügen Sie das NuGet-Paket
Wasi.Sdkhinzu. - Schreiben Sie normalen C#-Code (z. B. eine Konsolenanwendung).
- Erstellen Sie das Projekt mit dem Flag
--wasi– als Ergebnis erhalten Sie eine.wasm-Datei. - Führen Sie diese in einer beliebigen Umgebung aus, die WASI unterstützt (z. B. Wasmtime oder Wasmer).
Es ist wichtig zu beachten, dass die Unterstützung in dieser Phase nicht vollständig ist: Einige Funktionen wie Multithreading und direkter Dateisystemzugriff sind derzeit noch eingeschränkt. Für Serverszenarien, Microservices und Rechenaufgaben reicht dies jedoch bereits aus.
Konkurrenz mit Python und Rust
Lange Zeit dominierten Python und Rust in Szenarien, die Portabilität und Sicherheit erforderten (z. B. in WebAssembly). C# mit WASI-Unterstritt betritt diese Nische mit dem Vorteil einer umfangreichen Standardbibliothek und einer vertrauten Syntax. Für Teams, die bereits .NET verwenden, bedeutet dies eine niedrigere Einstiegshürde: Sie müssen keine neue Sprache lernen, um eine Anwendung auf Edge-Plattformen bereitzustellen.
Darüber hinaus arbeitet Microsoft aktiv mit dem Bytecode Alliance-Projekt zusammen, das den WASI-Standard weiterentwickelt. Dies stellt sicher, dass .NET mit zukünftigen Versionen der Spezifikation kompatibel bleibt.
Wie geht es weiter?
Die WASI-Unterstützung in .NET ist derzeit noch eine experimentelle Funktion, aber bereits in .NET 9 wird ihre Stabilisierung und API-Erweiterung erwartet. Entwickler sollten jetzt mit dem Testen beginnen, um zum Zeitpunkt der offiziellen Veröffentlichung für die Migration bereit zu sein.
Für diejenigen, die an Python gewöhnt sind, könnte dies ein Anlass sein, C# als Alternative in Betracht zu ziehen für