.NET Core beschäftigt die Developer-Community schon seit gewisser Zeit. Ein Framework, dass es ermöglicht, Software für unterschiedliche Plattformen, wie Windows, Linux oder Mac, zu bauen. Es war bisher zur Entwicklung von Web-Applikationen, Microservices oder IoT-Lösungen gedacht. Mit .NET Core 3.0 gibt es jetzt Unterstützung für WPF und Windows-Forms. Was bedeutet das für Desktop-Entwickler? Kann man ab jetzt WPF-Anwendung auf Linux-Maschinen ausführen? Auf diese und andere Frage finden Sie Antworten in diesem Blogbeitrag.
Die Unterstützung in .NET Core für die Desktop-Technologien Windows Presentation Foundation (WPF) und Windows Forms wurde bereits im letzten Jahr während der BUILD-Konferenz angekündigt. In dieser Zeit hat Microsoft fleißig daran gearbeitet, die auf .NET Core basierende Entwicklung von WPF und Windows Forms Anwendungen möglich zu machen. Die Effekte der Arbeit können wir nun sehen. Schon im Dezember 2018 wurden beide Frameworks als Open Source bereitgestellt. Für WPF steht die Portierung einiger Komponenten aus. Beide Frameworks sind Teil der .NET Foundation und unterliegen der MIT-Lizenz. Trotz der Cross-Plattform-Fähigkeit von .NET-Core können WPF oder Windows Forms ausschließlich für Windows entwickelt und ausgeführt werden. Beide sind zu stark von Windows abhängig, so dass man diese nicht auf anderen Plattformen ausführen könnte. Für diejenigen, die eine UI Framework wirklich Cross Plattform benutzen möchten, sollten einen Blick auf die Projekte Avalonia und Eto.Forms werfen.
Abbildung 1: .NET Core 3 wird um Desktop, IoT und AI erweitert
Für WPF-Applikationen, die mit .NET Core 3.0 erstellt werden, gibt es auch eine entsprechende Toolunterstützung von Microsoft. Ab Version 16.3 bietet Visual-Studio 2019 neue Features für die Entwicklung an, unter anderem neue Templates für WPF-Projekte, XAML-Designer oder XAML Hot Reload. XAML Hot Reload ermöglicht Änderungen der UI in Visual-Studio 2019, während die Anwendung ausgeführt wird. Für den XAML Designer ist nun ein neuer Prozess verantwortlich (wpfsurface.exe), der ebenfalls in .NET Core implementiert ist. Dies bedeutet, dass selbstentwickelte Erweiterungen für Visual Studio nicht unbedingt das gleiche Verhalten aufweisen und deshalb Anpassungen notwendig sein können. Der Windows Forms Designer befindet sich noch in der Preview-Phase, kann aber bereits separat als Extension heruntergeladen und installiert werden. Die .NET Core CLI hat einige neue Befehle für WPF und Windows Forms, unter anderem zur Erstellung neuer Projekttypen, die mittels dotnet new <ProjektTyp> aufgerufen werden können.
Welche Vorteile können erwarten werden, wenn man Desktop-Anwendungen mit .NET Core entwickelt? Microsoft hat angekündigt, dass die Zukunft des .NET Frameworks in .NET Core liegt. Das bedeutet, dass alle innovative Neuerungen in .NET Core kommen werden. Das .NET Framework wird zwar immer noch gepflegt, aber es gibt keine neuen Features mehr. Darüber hinaus bietet .NET Core 3.0 Vorteile, die das .NET Framework nicht bietet, z.B, side-by-side-Installationen oder eigenständige Anwendungen (self-contained). Damit kann man eine Applikation zusammen mit der Laufzeitumgebung bündeln. Das bedeutet, dass der Benutzer sich nicht darum kümmern muss, dass das Framework in gewünschter Version bereits auf dem System installiert ist. In solchen Fällen verzichtet man jedoch auf automatische Updates, die sonst vom Betriebssystem übernommen werden. Das Entwicklungsteam muss dann selbst dafür sorgen, dass Updates, die zum Beispiel kritische Sicherheitslücken schließen, ausgerollt werden. Desktop-Anwendungen können außerdem von der in .NET Core verbesserten Performanz profitieren, vor allem für I/O- und Netzwerkoperationen und auch den neuen C#-Sprachfeatures.
Abbildung 2: .NET Framework nach .NET Core Migrationsprozess
(Quelle: Visual Studio Blog)
Wie sicher ist eine Migration einer bestehenden WPF-Anwendung von .NET Framework auf .NET Core? Microsoft gibt an, dass sie alle Anstrengungen unternommen haben, dass eine Migration von .NET Framework auf .NET Core möglichst einfach ist. In vielen Fällen sollte ausschließlich eine Umstellung des Ziel-Frameworks ausreichen. Eine Anleitung anhand eines Beispielprojekts kann hier nachgelesen werden (siehe Abbildung 2).
.NET Core 3 bringt für Desktop-Entwickler interessante Neuerungen, die ihre Arbeit erleichtern. Ob das die Desktop-Entwicklung revolutionieren wird – bleibt fraglich. .NET Core ist aber eine empfehlenswerte Option, wenn mit einem neuen Projekt gestartet wird. Eine Migration einer bestehenden Software ist aber nicht in jedem Fall notwendig und sollte gegebenenfalls abgewogen werden.
Sprechen Sie uns an, wenn auch Sie Fragen zu Themen rund um .NET Core haben oder Hilfe bei Portierung Ihrer Anwendung nach .NET-Core 3.0 in Ihrem Unternehmen benötigen. Wir führen Sie gerne ans Ziel.