Blog
Machen Sie Ihre App fit für die Zukunft und migrieren Sie von WPF oder Winforms zu Blazor

Dieser Artikel basiert auf einem Migrationsprojekt von WPF zu Blazor und der Dokumentation von Microsoft.
Desktop-Anwendungen, die mit WPF oder WinForms erstellt wurden, sind seit vielen Jahren weit verbreitet und ermöglichen es Entwicklern, funktionsreiche Desktop-Anwendungen mit komplexen Benutzeroberflächen zu erstellen. Mit der steigenden Nachfrage nach plattformübergreifenden Anwendungen und modernen Benutzeroberflächen ist es jedoch eine attraktive Option geworden, ältere WPF/WinForms-Anwendungen auf moderne Webtechnologien zu migrieren, auch wenn Microsoft WPF und WinForms weiterhin pflegt.
Blazor ist ein relativ neues, von Microsoft entwickeltes Web-Framework, mit dem Entwickler Webanwendungen mit .NET erstellen können. Mit Blazor können Sie Ihre vorhandenen .NET-Bibliotheken, -Frameworks und -Kenntnisse nutzen, um Webanwendungen zu erstellen, die im Browser (Blazor WebAssembly) oder auf einem Server (Blazor Server) ausgeführt werden, ohne dass Plugins oder JavaScript erforderlich sind. Ausführlichere Informationen über Blazor finden Sie in dem Artikel "Einführung in Blazor" von Mark Foppen in Magazin #13.
In diesem Artikel erfahren Sie, wie Sie Ihre alte WPF/WinForms-Anwendung in eine moderne Blazor-Webanwendung umwandeln können. Wir gehen auch auf die Schritte ein, die Sie unternehmen müssen, die Entscheidungen, die Sie treffen müssen, und die möglichen Fallstricke, die Sie vermeiden sollten.
Warum Blazor?
Wenn Sie sich für ein Upgrade Ihrer bestehenden Anwendung entscheiden, müssen Sie den besten Ansatz ermitteln. Wahrscheinlich werden Sie untersuchen, welche Lösung für Sie am besten geeignet ist. Wollen Sie auf der grünen Wiese beginnen und die richtigen Spezifikationen von Grund auf sammeln? Zeit und Budget sind vielleicht begrenzt, dann ist es schwierig, eine Entscheidung zu treffen. In diesem Fall sollten Sie Blazor untersuchen. Da Sie bereits eine Menge Geschäftslogik in Ihrer bestehenden .NET-Anwendung haben, können Sie durch die Wiederverwendung dieser Logik Zeit sparen. Außerdem ist es ein großer Vorteil, wenn Ihr Team oder Ihre Organisation über .NET-Kenntnisse verfügt. Die Lernkurve verläuft langsamer als beim Erlernen eines völlig neuen Frameworks.
Im Vergleich zu WinForms oder WPF bietet Blazor mehrere Vorteile:
- Blazor wird von allen wichtigen Browsern unterstützt 1 (Safari, Chrome, Edge, FireFox), einschließlich mobiler
- Die Bereitstellung/Zustellung ist einfacher zu verwalten
- Viele weithin unterstützte UI-Frameworks
- Mehrere verschiedene Hosting-Methoden
Während sowohl WPF als auch WinForms noch Roadmaps haben 2 3 haben, konzentrieren sich die Produktteams von Microsoft hauptsächlich auf Leistung und Fehlerbehebung, und die Kapazität dieser Teams ist begrenzt. Blazor hingegen erfreut sich zunehmender Beliebtheit. Wir können bei fast jedem ASP.NET Core-Upgrade zahlreiche Verbesserungen erwarten, die sowohl der Anwendungsleistung als auch der Produktivität der Entwickler zugute kommen.
Die Vorbereitung
Hoffentlich trennt die Architektur Ihrer Anwendung die Ansichtslogik von der Geschäftslogik, möglicherweise unter Verwendung von MVC oder MVVM oder einer ähnlichen Architektur. Falls nicht, erfordert die Migration dieser (Geschäfts-)Logik von der alten Ansicht zur neuen modernen Webansicht zusätzliche Arbeit.
Auch die heute weit verbreiteten Best Practices waren möglicherweise noch nicht üblich, als Ihre WPF/WinForms-Anwendung entwickelt wurde. So erfordern beispielsweise Dependency Injection, NuGet-Pakete, Pipelines für die Bereitstellung der Anwendung und vieles mehr zusätzliche Zeit. Berücksichtigen Sie dies bei der Planung und Implementierung der Lösung.
Stellen Sie außerdem sicher, dass die .NET-Versionen, NuGet-Pakete und andere Abhängigkeiten Ihres Projekts auf dem neuesten Stand sind und mindestens den .NET-Standard oder die neueste unterstützte .NET-Version verwenden. Veraltete Bibliotheken können Probleme verursachen, insbesondere bei der Verwendung von Blazor WebAssembly.
Und schließlich sollten Sie Ihre generischen Komponenten berücksichtigen. Vielleicht haben Sie wiederverwendbare WPF/WinForms-Komponenten erstellt oder eine Bibliothek mit Komponenten verwendet. Für Blazor werden Sie etwas Ähnliches tun wollen.
Zahlreiche Open-Source- oder kostenlose Komponentenbibliotheken sind in der Community verfügbar. Prüfen Sie, ob diese Bibliotheken die Funktionen bieten, die Sie benötigen, und erkunden Sie sie frühzeitig, um zu vermeiden, dass Sie zwischen den Bibliotheken wechseln und Zeit verlieren. MudBlazor 4 und Radzen 5 sind bekannte Bibliotheken mit einer großen Auswahl an Komponenten für die Benutzeroberfläche. Sowohl MudBlazor als auch Radzen sind kostenlos und enthalten eine große Liste von Komponenten, die Sie problemlos in Ihrer Anwendung einsetzen können. Beachten Sie, dass nicht alle (Komponenten-)Bibliotheken einfach nur kostenlos sind. Vergewissern Sie sich, dass Sie ihr Lizenzmodell verstehen.
Wechsel von einem Desktop zum Browser
Der Übergang von WPF oder WinForms zu Blazor bedeutet einen Wechsel von einer Desktop-Umgebung (wahrscheinlich Windows) zu einem Browser. Dieser Wechsel kann einige Funktionen einschränken, z.B. die Interaktion mit dem Host. Wenn Ihre Anwendung z.B. Microsoft Word öffnet und dessen Verwendung kontrolliert, verlieren Sie diese Kontrolle, wenn Sie zu einer browserbasierten Anwendung wechseln. Sie können es den Benutzern zwar immer noch ermöglichen, Dokumente in Word zu öffnen, aber Sie werden nicht mehr in der Lage sein, ihre Aktionen innerhalb von Word zu kontrollieren.
Wenn Ihre Anwendung stark vom Betriebssystem abhängt, sollten Sie sich Blazor Hybrid ansehen. 6 oder .NET MAUI 7 als Alternativen.
Um Ihre Anwendung in einem Browser zugänglich zu machen, ist auch ein anderer Bereitstellungsansatz erforderlich. Je nach der gewählten Hosting-Methode sollte Ihre Anwendung im Internet oder in einem (internen) Netzwerk verfügbar gemacht werden. Das bedeutet, dass Sie Ihre Netzwerkinfrastruktur vorbereiten oder anpassen, SSL-Zertifikate einrichten müssen, um Verbindungen zu sichern, und DNS konfigurieren müssen, um Ihre Anwendung unter einer bekannten und sicheren Webadresse bereitzustellen.
Blazor Server vs. Blazor WebAssembly
Wenn Sie Ihre neue Lösung einrichten, müssen Sie sich zwischen Blazor Server und Blazor WebAssembly entscheiden. Auch wenn es auf den ersten Blick nicht so wichtig erscheint, hat diese Entscheidung erhebliche Auswirkungen auf Ihre Infrastruktur und die Zuverlässigkeit Ihrer Anwendung. Es ist eine gute Idee, diese Entscheidung schon früh in Ihrem Projekt zu treffen. Sie können immer noch zwischen den beiden Optionen wechseln, aber das erfordert Zeit und Aufwand. Wenn Sie sich nicht sicher sind, welche Option die beste ist, können Sie zunächst beide unterstützen und deren Zuverlässigkeit testen.
Es ist wichtig, den Unterschied zwischen den beiden Hosting-Modellen zu verstehen. Blazor WebAssembly läuft vollständig im Browser des Benutzers, während Blazor Server HTML serverseitig rendert und Client-Interaktionen über SignalR verarbeitet werden.
Microsoft bietet einen Überblick 8 um Ihnen bei der Auswahl des richtigen Hosting-Modells für Ihre Bedürfnisse zu helfen.
†Blazor WebAssembly und Blazor Hybrid Apps können serverbasierte APIs verwenden, um auf Server-/Netzwerkressourcen zuzugreifen und auf privaten und sicheren App-Code zuzugreifen. ‡Blazor WebAssembly erreicht nur erreicht mit der AOT-Kompilierung (AOT = ahead of time) eine nahezu native Leistung.8
Damit Blazor WebAssembly in Ihrer Umgebung funktioniert, benötigen Sie einen Dienst (vorzugsweise eine API), der mit Ihren internen Systemen (z.B. Datenbanken) interagiert. Im Gegensatz dazu kann Blazor Server als einziger Einstiegspunkt für Ihre Umgebung dienen und mit allen internen Systemen interagieren.
Blazor Server hat jedoch einige Nachteile, wie z.B. die Aufrechterhaltung des Status der interagierenden Benutzer auf dem Server. Das kann die Sache verkomplizieren, da eine Skalierung oder ein Neustart Ihrer Anwendung dazu führen kann, dass Benutzer ihre Sitzung verlieren. Außerdem müssen Sie sicherstellen, dass kein gemeinsamer Status zwischen den Benutzern besteht, um unerwünschte oder schädliche Situationen zu vermeiden.
Im Vergleich zu Ihrer WPF/WinForms-Anwendung ist Blazor WebAssembly möglicherweise die bessere Wahl, da sowohl WPF/WinForms als auch Blazor WebAssembly clientseitig ausgeführt werden. Beachten Sie jedoch, dass nicht alle .NET-Bibliotheken in Blazor WebAssembly unterstützt werden. Außerdem ist die anfängliche Ladezeit länger, da alle relevanten DLLs erst heruntergeladen werden müssen. Da die Anwendung clientseitig ausgeführt wird, benötigen Sie außerdem eine öffentliche API für die Kommunikation mit Datenbanken oder internen Diensten. Oder Sie müssen diese Datenbanken und internen Dienste offenlegen, damit Ihre Anwendung vom Client aus darauf zugreifen kann, aber das wollen Sie wahrscheinlich aus Sicherheitsgründen nicht.
Im Ergebnis verhält sich Ihre Anwendung wie eine Single Page Application (SPA) mit hervorragender Leistung. Sie können Ihre Anwendung als statische Anwendung hosten und müssen sich keine Gedanken mehr über die Skalierung des Frontends machen.
Mit .NET 8 wird Blazor eine große Verbesserung namens "Full stack web UI with Blazor" erhalten. Mit diesem Update werden Sie in der Lage sein, eine Kombination aus Blazor Server und Blazor WebAssembly zu verwenden. Das bedeutet, wenn die DLLs heruntergeladen werden, wird die Anwendung diese verwenden und eine schnelle Reaktionszeit haben. Wenn die DLLs noch nicht verfügbar sind, nutzt die Anwendung die Blazor Server-Fähigkeit, um sicherzustellen, dass Sie nicht auf das Herunterladen dieser DLLs warten müssen. Auf diese Weise erhalten die Benutzer der Anwendung ein besseres/ruhigeres Erlebnis. Dieses große Update enthält viele schöne Verbesserungen. Wenn .NET 8 für Sie verfügbar ist, sollten Sie es sich ansehen, denn es kann Ihre Anwendung erheblich verbessern.
Benutzererfahrung
Ein wichtiger Aspekt, den Sie berücksichtigen müssen, ist die Veränderung der Benutzererfahrung (UX) für Ihre Endbenutzer. Bei Ihrer aktuellen Anwendung sind die Benutzer an ein Desktop-Erlebnis gewöhnt, das oft ein Microsoft Windows-Look-and-Feel aufweist. Der Übergang zu einer browserbasierten Anwendung bringt eine andere Erfahrung mit sich. Elemente wie URLs, das Öffnen von Registerkarten und Cookies könnten für einige Benutzer neu sein. Daher ist es wichtig, klare Anweisungen zu geben, wie die Anwendung in einer Browserumgebung zu verwenden ist. Auch die Authentifizierung ist anders. Bei WPF/WinForms haben Sie vielleicht eine Authentifizierung mit Benutzername und Passwort oder vielleicht eine Windows-Authentifizierung. Mit Blazor könnten Sie Azure Active Directory B2C verwenden, um eine sichere Lösung zu bieten.
Außerdem bietet diese Umstellung die Gelegenheit, die Benutzerfreundlichkeit Ihrer Anwendung erheblich zu verbessern. Nutzen Sie ggf. Überwachungstools, um die Nutzungsmuster zu analysieren und datengestützte Verbesserungen vorzunehmen. Indem Sie sich auf die Benutzerfreundlichkeit konzentrieren und potenzielle Herausforderungen angehen, können Sie einen reibungsloseren Übergang und ein zufriedenstellenderes Erlebnis für die Benutzer Ihrer Anwendung gewährleisten.
Fazit
Zusammenfassend lässt sich sagen, dass die Migration Ihrer alten WPF/WinForms-Anwendung auf eine moderne Blazor-Webanwendung eine strategische und vorteilhafte Entscheidung sein kann. Mit Blazor können Sie Ihr vorhandenes .NET-Wissen und Ihre Ressourcen nutzen und erhalten gleichzeitig eine zukunftssichere, browserbasierte Lösung, die eine breite Palette von Geräten und Plattformen unterstützt.
Der Migrationsprozess erfordert eine sorgfältige Planung, architektonische Überlegungen und ein Verständnis der Unterschiede zwischen den Hosting-Modellen Blazor Server und Blazor WebAssembly. Wenn Sie sich die Zeit nehmen, die Architektur, Abhängigkeiten und Komponenten Ihrer aktuellen Anwendung zu analysieren, können Sie einen reibungsloseren Übergang zu Blazor gewährleisten.
Darüber hinaus hilft Ihnen die Anwendung von Best Practices und modernen Entwicklungstechniken, langfristig eine besser wartbare und skalierbare Anwendung zu erstellen. Denken Sie an die Kompromisse zwischen Blazor Server und Blazor WebAssembly, wenn Sie ein Hosting-Modell wählen, das am besten zu den Anforderungen und der Infrastruktur Ihrer Anwendung passt.
Wenn Sie sich auf diese Reise begeben, ist es wichtig, die Auswirkungen der Migration auf die Benutzererfahrung zu bedenken und potenzielle Herausforderungen anzugehen. Der Übergang von einer Desktop-Anwendung zu einer browserbasierten Lösung bietet die Möglichkeit, die Benutzerfreundlichkeit erheblich zu verbessern. Nutzen Sie Überwachungstools, um Nutzungsmuster zu analysieren und datengesteuerte Verbesserungen vorzunehmen, um das Erlebnis für die Benutzer Ihrer Anwendung zu optimieren.
Wenn Sie sich auf diese Aspekte konzentrieren und klare Anweisungen geben, die den Benutzern bei der Anpassung an die neue Anwendung helfen, können Sie einen reibungsloseren Übergang und ein zufriedenstellenderes Erlebnis für Ihre Benutzer gewährleisten. Denken Sie daran, dass es auf dem Weg dorthin zwar einige Herausforderungen geben kann, das Endergebnis aber eine vielseitigere, leistungsfähigere und wartungsfreundlichere Anwendung sein wird, die moderne Webtechnologien einbezieht.
Werden Sie Ihre App für die Zukunft aktualisieren?
- https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms?view=aspnetcore-7.0︎
- https://github.com/dotnet/wpf/blob/main/roadmap.md︎
- https://github.com/dotnet/winforms/blob/main/docs/roadmap.md︎
- https://blazor.radzen.com︎
- https://mudblazor.com︎
- https://learn.microsoft.com/en-us/aspnet/core/blazor/hybrid/?view=aspnetcore-7.0︎
- https://learn.microsoft.com/en-us/dotnet/maui︎
- https://learn.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-7.0︎
Strategien zur Anwendungsmodernisierung für IT-Führung und Innovation
eBook herunterladenVerfasst von

Niels Nijveldt
I'm Niels Nijveldt, and I work as a consultant at Xebia. I enjoy working with Blazor, Azure, DevOps and fullstack development.
Unsere Ideen
Weitere Blogs
Contact



