Blazor Hybrid vs .NET MAUI vs WPF: web, desktop of allebei voor een bedrijfsapplicatie?
Wat Blazor Hybrid is, hoe het zich verhoudt tot WPF, .NET MAUI, een webapplicatie en Electron, en hoe u WinForms of WPF moderniseert zonder herschrijven.
Vlado Pandžić · Oprichter · Senior .NET-architect
Gepubliceerd · 5 min lezen
Veel bedrijven hebben een belangrijke WPF- of WinForms-applicatie op elk bureau. Die werkt, maar alleen op Windows, elke wijziging betekent een nieuwe installatie, en vroeg of laat vraagt iemand: moet dit een webapplicatie worden? En hoe zit het met het magazijn, de buitendienst en de tablets?
Lang was het antwoord een pijnlijke keuze tussen desktop en web. Blazor Hybrid neemt een groot deel van die keuze weg: dezelfde schermen kunnen draaien in een desktopapplicatie, op een tablet of telefoon en in de browser.
Wat Blazor Hybrid is, in gewone woorden
In een Blazor Hybrid-applicatie draaien Blazor-componenten binnen een echte desktop- of mobiele applicatie. Ze draaien native in .NET, niet in de browser en niet op WebAssembly, en worden alleen getoond via een ingebouwde webweergave. Daardoor hebben ze volledige toegang tot het apparaat: lokale bestanden, printers, scanners, seriële poorten, de camera.
Het component dat dit mogelijk maakt, BlazorWebView, bestaat voor drie platforms:
- .NET MAUI: Windows, macOS, Android en iOS vanuit één project
- WPF: binnen een bestaande WPF-applicatie
- Windows Forms: binnen een bestaande WinForms-applicatie
De opties naast elkaar
| Optie | Draait op | Goed voor | Let op |
|---|---|---|---|
| Op WPF of WinForms blijven | Windows-desktop | Een stabiele applicatie die zelden verandert | Verouderende techniek, alleen Windows, moeilijker mensen te vinden |
| Blazor binnen de bestaande WPF- of WinForms-app | Windows-desktop | Geleidelijke modernisering: nieuwe schermen in Blazor | Twee UI-technologieën een tijd naast elkaar |
| .NET MAUI Blazor Hybrid | Windows, macOS, Android, iOS | Eén interface voor desktop, tablet en telefoon, met toegang tot het apparaat | Voor iOS is een Mac nodig, distributie via installers of stores |
| Blazor-webapplicatie | Elke browser | De meeste bedrijfsapplicaties: geen installatie, directe updates | Geen directe toegang tot lokale hardware |
| Electron | Desktop | Teams die in JavaScript werken | Een tweede taal en stack, grotere applicaties |
De interessantste weg: Blazor binnen de WPF-applicatie die u al heeft
Voor een bedrijf met een grote WPF- of WinForms-applicatie is niet MAUI het waardevolst, maar dit: BlazorWebView kan binnen de bestaande applicatie worden geplaatst, naast de oude schermen. Nieuwe en herwerkte schermen worden in Blazor gebouwd, de rest van de applicatie blijft zoals hij is.
<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 staat in een Razor-klassenbibliotheek die met de webapplicatie wordt gedeeld. Als het zover is, draait hetzelfde scherm in de browser zonder te worden herschreven. Scherm voor scherm wordt de desktopapplicatie stilletjes een webapplicatie, en gebruikers zitten tussendoor nooit zonder werkend gereedschap.
Gedeelde schermen, verschillende apparaten
De truc is dat gedeelde componenten niet rechtstreeks met hardware praten, maar met een interface. Elk platform levert zijn eigen implementatie:
public interface IBarcodeScanner
{
Task<string?> ScanAsync();
}
Het gedeelde orderscherm vraagt IBarcodeScanner om een code. In de desktopapplicatie in het magazijn leest de implementatie een USB-scanner. Op een telefoon gebruikt ze de camera. In de browser typt de gebruiker de code. Het scherm is overal hetzelfde, alleen de implementatie achter de interface verandert.
Wanneer Blazor Hybrid zinvol is
- De applicatie heeft lokale hardware nodig: scanners, labelprinters, weegschalen, seriële apparaten, lokale bestanden.
- Gebruikers werken zonder betrouwbare verbinding: magazijnen, de buitendienst, productiehallen.
- U wilt één set schermen voor desktop, tablet en web, in plaats van drie applicaties.
- U heeft een grote WPF- of WinForms-applicatie en wilt die geleidelijk moderniseren in plaats van herschrijven.
Wanneer niet
- Als alles wat de applicatie doet in een browser kan draaien, is een gewone Blazor-webapplicatie eenvoudiger: geen installatie, en elke gebruiker heeft altijd de nieuwste versie.
- Als de applicatie grafisch zwaar is, met complex tekenwerk of 3D, zijn native WPF of een gespecialiseerd framework het betere gereedschap.
- Als u een verzorgde consumentenapp voor de app stores bouwt, is volledig native mobiele ontwikkeling meestal de veiligere keuze.
Eerlijk over de nadelen
- Installatie en updates. Een desktop- of mobiele applicatie moet op elk apparaat worden geïnstalleerd en bijgewerkt, een webapplicatie één keer op de server.
- De webweergave hangt af van het platform. Op Windows gebruikt
BlazorWebViewWebView2, en stijlen kunnen per platform iets anders worden weergegeven, dus test op de apparaten die uw gebruikers echt hebben. - iOS vraagt een Mac. Bouwen en publiceren voor iOS vereist een Mac als buildhost, ook als de rest van het team op Windows werkt.
Vijf vragen voordat u beslist
- Heeft de applicatie hardware of bestanden op de computer van de gebruiker nodig?
- Werken gebruikers zonder betrouwbare verbinding?
- Welke apparaten gebruiken ze: alleen Windows-pc’s of ook tablets en telefoons?
- Heeft u al een grote WPF- of WinForms-applicatie die de moeite waard is om tijdens de overgang te behouden?
- Hoe levert u nu updates, en hoe vaak wilt u dat?
Zijn de antwoorden “geen hardware, goede verbinding, alleen pc’s”, bouw dan een Blazor-webapplicatie. Komen hardware, offline werken of meerdere apparaten in beeld, dan is Blazor Hybrid een serieuze optie.
Hoe een desktopapplicatie stap voor stap naar het web gaat, leest u in het artikel over WinForms en WPF naar het web, en welke modus webschermen moeten gebruiken in Blazor Server vs WebAssembly vs Auto.
Hoe wij werken
ProCoding is een .NET-studio uit Split, Kroatië, en wij brengen Blazor sinds 2020 in productie. Wij helpen u kiezen tussen web, desktop en hybride, zetten de gedeelde componentenbibliotheek op en zetten WPF- en WinForms-applicaties scherm voor scherm over, zonder gebruikers hun werkende gereedschap af te nemen. Meer over ons werk met Blazor, en de eerste stap is een gratis gesprek van 30 minuten.
Bronnen
- 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
Dit artikel is alleen algemene informatie en geen juridisch, fiscaal, financieel of ander professioneel advies. Scenario’s, voorbeelden en berekeningen zijn ter illustratie. Gebruiksvoorwaarden en disclaimer.