Blazor Hybrid vs .NET MAUI vs WPF: Web, Desktop oder beides für eine Geschäftsanwendung?
Was Blazor Hybrid ist, wie es sich mit WPF, .NET MAUI, einer Webanwendung und Electron vergleicht und wie Sie WinForms oder WPF ohne Neuschreiben modernisieren.
Vlado Pandžić · Gründer · Senior .NET-Architekt
Veröffentlicht · 5 Min. Lesezeit
Viele Unternehmen haben eine wichtige WPF- oder WinForms-Anwendung auf jedem Schreibtisch. Sie läuft, aber nur unter Windows, jede Änderung heißt eine neue Installation, und früher oder später fragt jemand: Sollte das eine Webanwendung werden? Und was ist mit dem Lager, dem Außendienst und den Tablets?
Lange war die Antwort eine schmerzhafte Wahl zwischen Desktop und Web. Blazor Hybrid nimmt einen großen Teil dieser Wahl weg: Dieselben Bildschirme können in einer Desktop-Anwendung, auf Tablet oder Smartphone und im Browser laufen.
Was Blazor Hybrid ist, in einfachen Worten
In einer Blazor-Hybrid-Anwendung laufen Blazor-Komponenten in einer echten Desktop- oder Mobilanwendung. Sie laufen nativ in .NET, nicht im Browser und nicht auf WebAssembly, und werden nur über eine eingebettete Webansicht dargestellt. Dadurch haben sie vollen Zugriff auf das Gerät: lokale Dateien, Drucker, Scanner, serielle Schnittstellen, die Kamera.
Die Komponente, die das möglich macht, BlazorWebView, gibt es für drei Plattformen:
- .NET MAUI: Windows, macOS, Android und iOS aus einem Projekt
- WPF: innerhalb einer bestehenden WPF-Anwendung
- Windows Forms: innerhalb einer bestehenden WinForms-Anwendung
Die Optionen nebeneinander
| Option | Läuft auf | Gut für | Worauf achten |
|---|---|---|---|
| Bei WPF oder WinForms bleiben | Windows-Desktop | Eine stabile Anwendung, die sich selten ändert | Alternde Technik, nur Windows, schwerer zu besetzen |
| Blazor in der bestehenden WPF- oder WinForms-Anwendung | Windows-Desktop | Schrittweise Modernisierung: neue Bildschirme in Blazor | Zwei UI-Technologien eine Zeit lang nebeneinander |
| .NET MAUI Blazor Hybrid | Windows, macOS, Android, iOS | Eine Oberfläche für Desktop, Tablet und Smartphone, mit Gerätezugriff | Für iOS braucht es einen Mac, Verteilung über Installer oder Stores |
| Blazor-Webanwendung | Jeder Browser | Die meisten Geschäftsanwendungen: keine Installation, sofortige Updates | Kein direkter Zugriff auf lokale Hardware |
| Electron | Desktop | Teams, die in JavaScript arbeiten | Eine zweite Sprache und ein zweiter Stack, größere Anwendungen |
Der interessanteste Weg: Blazor in der WPF-Anwendung, die Sie schon haben
Für ein Unternehmen mit einer großen WPF- oder WinForms-Anwendung ist nicht MAUI das Wertvollste, sondern dies: BlazorWebView lässt sich in die bestehende Anwendung setzen, neben die alten Bildschirme. Neue und überarbeitete Bildschirme entstehen in Blazor, der Rest der Anwendung bleibt, wie er ist.
<blazor:BlazorWebView HostPage="wwwroot\index.html" Services="{DynamicResource services}">
<blazor:BlazorWebView.RootComponents>
<blazor:RootComponent Selector="#app" ComponentType="{x:Type shared:OrderScreen}" />
</blazor:BlazorWebView.RootComponents>
</blazor:BlazorWebView>
OrderScreen liegt in einer Razor-Klassenbibliothek, die mit der Webanwendung geteilt wird. Wenn es so weit ist, läuft derselbe Bildschirm im Browser, ohne neu geschrieben zu werden. Bildschirm für Bildschirm wird die Desktop-Anwendung still zur Webanwendung, und die Nutzer verlieren zwischendurch nie ein funktionierendes Werkzeug.
Gemeinsame Bildschirme, unterschiedliche Geräte
Der Trick: Gemeinsame Komponenten sprechen nicht direkt mit der Hardware, sondern mit einer Schnittstelle. Jede Plattform liefert ihre eigene Implementierung:
public interface IBarcodeScanner
{
Task<string?> ScanAsync();
}
Der gemeinsame Auftragsbildschirm fragt IBarcodeScanner nach einem Code. In der Desktop-Anwendung im Lager liest die Implementierung einen USB-Scanner. Auf dem Smartphone nutzt sie die Kamera. Im Browser tippt der Nutzer den Code ein. Der Bildschirm ist überall derselbe, nur die Implementierung hinter der Schnittstelle ändert sich.
Wann Blazor Hybrid sinnvoll ist
- Die Anwendung braucht lokale Hardware: Scanner, Etikettendrucker, Waagen, serielle Geräte, lokale Dateien.
- Nutzer arbeiten ohne zuverlässige Verbindung: Lager, Außendienst, Produktionshallen.
- Sie wollen einen Satz Bildschirme für Desktop, Tablet und Web statt drei Anwendungen.
- Sie haben eine große WPF- oder WinForms-Anwendung und wollen sie schrittweise modernisieren statt neu schreiben.
Wann nicht
- Wenn alles, was die Anwendung tut, im Browser laufen kann, ist eine einfache Blazor-Webanwendung einfacher: keine Installation, und jeder Nutzer hat immer die neueste Version.
- Wenn die Anwendung grafisch anspruchsvoll ist, mit komplexem Zeichnen oder 3D, sind natives WPF oder ein spezialisiertes Framework das bessere Werkzeug.
- Wenn Sie eine ausgefeilte Endkunden-App für die App Stores bauen, ist vollständig native mobile Entwicklung meist die sicherere Wahl.
Ehrlich über die Nachteile
- Installation und Updates. Eine Desktop- oder Mobilanwendung muss auf jedem Gerät installiert und aktualisiert werden, eine Webanwendung einmal auf dem Server.
- Die Webansicht ist plattformabhängig. Unter Windows nutzt
BlazorWebViewWebView2, und Styles können auf verschiedenen Plattformen leicht anders aussehen, also testen Sie auf den Geräten, die Ihre Nutzer wirklich haben. - iOS braucht einen Mac. Bauen und Veröffentlichen für iOS erfordert einen Mac als Build-Host, auch wenn der Rest des Teams unter Windows arbeitet.
Fünf Fragen vor der Entscheidung
- Braucht die Anwendung Hardware oder Dateien auf dem Rechner des Nutzers?
- Arbeiten die Nutzer ohne zuverlässige Verbindung?
- Welche Geräte nutzen sie: nur Windows-PCs oder auch Tablets und Smartphones?
- Haben Sie bereits eine große WPF- oder WinForms-Anwendung, die während des Übergangs erhalten bleiben soll?
- Wie liefern Sie heute Updates aus, und wie oft möchten Sie das?
Lauten die Antworten „keine Hardware, gute Verbindung, nur PCs“, bauen Sie eine Blazor-Webanwendung. Kommen Hardware, Offline-Arbeit oder mehrere Geräte ins Spiel, lohnt sich ein ernsthafter Blick auf Blazor Hybrid.
Wie eine Desktop-Anwendung Schritt für Schritt ins Web wechselt, beschreibt der Artikel über den Umstieg von WinForms und WPF ins Web, und welchen Modus Webbildschirme nutzen sollten, der Artikel Blazor Server vs WebAssembly vs Auto.
Wie wir arbeiten
ProCoding ist ein .NET-Studio aus Split, Kroatien, und wir bringen Blazor seit 2020 in Produktion. Wir helfen bei der Wahl zwischen Web, Desktop und Hybrid, richten die gemeinsame Komponentenbibliothek ein und migrieren WPF- und WinForms-Anwendungen Bildschirm für Bildschirm, ohne den Nutzern ein funktionierendes Werkzeug zu nehmen. Mehr über unsere Arbeit mit Blazor, und der erste Schritt ist ein kostenloses 30-minütiges Gespräch.
Quellen
- ASP.NET Core Blazor Hybrid, Microsoft Learn
- Build a WPF Blazor app, Microsoft Learn
- Build a Windows Forms Blazor app, Microsoft Learn
- Build a .NET MAUI Blazor Hybrid app with a Blazor Web App, Microsoft Learn
- Reuse Razor components in ASP.NET Core Blazor Hybrid apps, Microsoft Learn
Dieser Artikel dient nur der allgemeinen Information und ist keine Rechts-, Steuer-, Finanz- oder sonstige Fachberatung. Szenarien, Beispiele und Berechnungen dienen der Veranschaulichung. Nutzungsbedingungen und Haftungsausschluss.