Een WinForms- of WPF-applicatie naar het web, zonder alles opnieuw te bouwen
De desktop-app werkt, maar installaties, thuiswerken en databasewachtwoorden op elke pc worden een probleem. Zo gaat hij stapsgewijs naar het web met Blazor.
Vlado Pandžić · Oprichter · Senior .NET-architect
Gepubliceerd · 4 min lezen
In veel bedrijven, vooral in productie, logistiek en groothandel, is het belangrijkste programma geen webapplicatie. Het is een desktopapplicatie in WinForms of WPF, tien of vijftien jaar geleden gebouwd, en het hele bedrijf draait erop.
En hij werkt. Dat is ook het probleem, want niemand wil iets aanraken wat werkt. Maar eromheen stapelen zich dingen op die steeds meer kosten.
Eerst de eerlijke waarheid: WinForms en WPF zijn niet dood
WinForms en WPF worden ook onder .NET 10 ondersteund. Als u de applicatie van .NET Framework naar actuele .NET overzet, kan hij nog jaren draaien.
Het probleem is dus niet dat hij ermee ophoudt. Het probleem is alles eromheen.
Waar een desktopapplicatie geld begint te kosten
- Installeren op elke pc. Een nieuwe versie betekent langs alle pc’s gaan, of een script dat op de helft mislukt. En dan werken vijf mensen met vijf verschillende versies.
- Thuiswerken en onderweg. Voor toegang van buitenaf is Citrix of extern bureaublad nodig, met licenties en servers die betaald moeten worden.
- Een tablet in het magazijn, een telefoon onderweg. Daar draait de desktopapplicatie niet op.
- Een databasewachtwoord op elke pc. De meeste oude desktopapplicaties maken rechtstreeks verbinding met de database, dus gebruikersnaam en wachtwoord van de database staan in de configuratie op elke pc. Wie een pc heeft, heeft toegang tot de database. Dat is een beveiligingslek waar de meeste managers niets van weten.
- Het wordt steeds moeilijker om mensen te vinden. Nieuwe ontwikkelaars bouwen voor het web, en steeds minder mensen onderhouden desktopapplicaties.
Drie routes
| Route | Wat het betekent | Risico | Wanneer het zinvol is |
|---|---|---|---|
| Op de desktop blijven | Overstap naar .NET 10, verder alles hetzelfde | Laag | Als een paar mensen hem op kantoor gebruiken en niemand hem van buitenaf nodig heeft |
| Alles in één keer herschrijven | Nieuwe webapplicatie, de oude gaat op de overstapdag uit | Hoog | Zelden: als de oude applicatie klein en eenvoudig is |
| Stap voor stap | Nieuwe techniek scherm voor scherm, naast de oude applicatie | Laag | Bijna altijd als de applicatie groot en belangrijk is |
Alles herschrijven klinkt overzichtelijk, maar betekent in de praktijk een of twee jaar waarin de nieuwe applicatie wordt gebouwd en de oude stilstaat. Als de nieuwe eindelijk komt, werkt de helft anders dan mensen gewend zijn, en gaat alles tegelijk mis.
De stapsgewijze route die weinig mensen kennen
Microsoft heeft een component die BlazorWebView heet. Daarmee worden Blazor-schermen rechtstreeks in een bestaande WinForms- of WPF-applicatie ingebouwd.
Nieuwe schermen worden dus in Blazor geschreven, maar binnen de oude applicatie getoond. Gebruikers merken geen migratie, alleen dat één scherm nieuw is. Als alle schermen zijn overgezet, gaan dezelfde Blazor-componenten naar een webapplicatie, zonder dat ze opnieuw geschreven worden.
Zo ziet een nieuw Blazor-scherm in een bestaande WinForms-applicatie eruit:
var services = new ServiceCollection();
services.AddWindowsFormsBlazorWebView();
var ordersView = new BlazorWebView
{
Dock = DockStyle.Fill,
HostPage = @"wwwroot\index.html",
Services = services.BuildServiceProvider(),
};
ordersView.RootComponents.Add<OrderList>("#app");
ordersTab.Controls.Add(ordersView);
En later hetzelfde component in de webapplicatie:
@page "/orders"
<OrderList />
Voor WPF werkt het net zo, met AddWpfBlazorWebView. De componenten staan in een gedeelde bibliotheek die zowel de desktop- als de webapplicatie gebruikt.
Hoe het er stap voor stap uitziet
- LogicaBedrijfsregels achter een API
- Nieuwe schermenBlazor in de oude applicatie
- WebDezelfde componenten in de browser
- KlaarDesktop weg als niemand hem nodig heeft
- Bedrijfslogica achter een API. Regels en databasetoegang gaan uit de schermen naar een gedeeld deel achter een API. Onderweg verdwijnt het databasewachtwoord van de pc’s van gebruikers, want alleen de API praat nog met de database.
- Nieuwe schermen in Blazor. Elk nieuw of herzien scherm wordt in Blazor geschreven en binnen de oude applicatie getoond.
- Webversie. Als genoeg schermen zijn overgezet, openen ze in de browser, op de pc thuis, de tablet in het magazijn of de telefoon onderweg.
- De desktop uitzetten. De oude applicatie verdwijnt pas als niemand hem meer nodig heeft, niet op een riskante overstapdatum.
Op elk moment hebt u een applicatie die werkt. Er is geen jaar waarin alleen gewacht wordt.
Draait de applicatie nog op .NET Framework, dan is de eerste stap meestal de migratie naar .NET 10, want BlazorWebView draait op actuele .NET.
Wat u deze week kunt controleren
Open op één pc het configuratiebestand van de desktopapplicatie en zoek de connection string. Staan daar gebruikersnaam en wachtwoord van de database in, dan staat dat wachtwoord op elke pc in het bedrijf.
Tel daarna: hoeveel mensen zouden de applicatie buiten kantoor nodig hebben, op een tablet of onderweg, en kunnen hem vandaag niet gebruiken?
Hoe wij werken
Dat is precies wat we doen: we brengen oude .NET-applicaties stap voor stap naar het web met Blazor, scherm voor scherm, zonder onderbreking en zonder een jaar wachten. We beginnen met een doorlichting van de applicatie en het besluit welk scherm eerst gaat, en het eerste nieuwe Blazor-scherm binnen uw bestaande applicatie ziet u meestal al na een paar weken. De eerste stap is een gratis gesprek van 30 minuten.
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.