Stara WinForms ili WPF aplikacija: kako je prebaciti u web bez velikog prepisivanja
Desktop aplikacija radi, ali instalacije, rad od kuće i lozinke za bazu na svakom računalu postaju problem. Kako je postupno prebaciti u web uz Blazor.
Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 4 min čitanja
U puno firmi, osobito u proizvodnji, logistici i veleprodaji, najvažniji program nije web aplikacija. To je desktop aplikacija u WinFormsu ili WPF-u, napravljena prije deset ili petnaest godina, i na njoj se vrti cijeli posao.
I radi. To je i problem, jer nitko ne želi dirati nešto što radi. Ali oko nje se nakupljaju stvari koje sve više koštaju.
Prvo poštena istina: WinForms i WPF nisu mrtvi
WinForms i WPF podržani su i na .NET-u 10. Ako aplikaciju prebacite s .NET Frameworka na novi .NET, ona može mirno raditi još godinama.
Problem, dakle, nije u tome što će prestati raditi. Problem je u svemu oko nje.
Gdje desktop aplikacija počinje koštati
- Instalacija na svako računalo. Nova verzija znači obilazak računala ili skriptu koja na pola njih ne prođe. I onda pet ljudi radi na pet različitih verzija.
- Rad od kuće i s terena. Za pristup izvana treba Citrix ili udaljena radna površina, s licencama i serverima koji se plaćaju.
- Tablet u skladištu i mobitel na terenu. Desktop aplikacija se na njima ne pokreće.
- Lozinka za bazu na svakom računalu. Većina starih desktop aplikacija spaja se izravno na bazu, pa se korisničko ime i lozinka za bazu nalaze u konfiguraciji na svakom računalu. Tko ima računalo, ima i pristup bazi. To je sigurnosna rupa za koju većina šefova ne zna.
- Sve teže je naći ljude. Novi developeri rade web, a desktop aplikaciju održava sve manje ljudi.
Tri puta
| Put | Što znači | Rizik | Kad ima smisla |
|---|---|---|---|
| Ostati na desktopu | Prelazak na .NET 10, sve ostalo isto | Mali | Kad aplikaciju koristi nekoliko ljudi u uredu i nitko je ne treba izvana |
| Sve prepisati odjednom | Nova web aplikacija, stara se ugasi na dan prelaska | Velik | Rijetko: kad je stara aplikacija mala i jednostavna |
| Postupno | Nova tehnologija ekran po ekran, uz staru aplikaciju | Mali | Gotovo uvijek kad je aplikacija velika i važna |
Prepisivanje odjednom zvuči čisto, ali u praksi znači godinu ili dvije u kojima se razvija nova aplikacija, a stara stoji. Kad nova konačno stigne, pola stvari radi drukčije nego što su ljudi navikli, i sve se lomi odjednom.
Postupni put koji malo tko zna
Microsoft ima komponentu koja se zove BlazorWebView. Njome se Blazor ekrani ugrađuju izravno u postojeću WinForms ili WPF aplikaciju.
To znači da se novi ekrani pišu u Blazoru, ali se prikazuju unutar stare aplikacije. Korisnici ne primjećuju nikakav prelazak, samo da je jedan ekran novi. Kad su svi ekrani prebačeni, iste Blazor komponente idu u web aplikaciju, bez ponovnog pisanja.
Ovako izgleda novi Blazor ekran unutar postojeće WinForms aplikacije:
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);
A kasnije ista komponenta u web aplikaciji:
@page "/orders"
<OrderList />
Za WPF je isto, samo s AddWpfBlazorWebView. Komponente žive u zajedničkoj biblioteci koju koriste i desktop i web aplikacija.
Kako to izgleda korak po korak
- LogikaPoslovna pravila iza API-ja
- Novi ekraniBlazor unutar stare aplikacije
- WebIste komponente u pregledniku
- KrajDesktop se gasi kad nitko ne treba
- Poslovna logika iza API-ja. Pravila i pristup bazi izvlače se iz ekrana u zajednički dio iza API-ja. Usput nestaje lozinka za bazu s računala korisnika, jer sad samo API razgovara s bazom.
- Novi ekrani u Blazoru. Svaki novi ili prepravljeni ekran piše se u Blazoru i prikazuje unutar stare aplikacije.
- Web verzija. Kad je dovoljno ekrana prebačeno, isti se otvaraju u pregledniku, na računalu kod kuće, tabletu u skladištu ili mobitelu na terenu.
- Gašenje desktopa. Stara aplikacija nestaje tek kad je više nitko ne treba, a ne na neki riskantni datum.
U svakom trenutku imate aplikaciju koja radi. Nema godine u kojoj se samo čeka.
Ako je aplikacija još na .NET Frameworku, prvi korak je obično prelazak na .NET 10, jer BlazorWebView radi na novom .NET-u.
Što možete provjeriti već ovaj tjedan
Otvorite konfiguracijsku datoteku desktop aplikacije na jednom računalu i potražite connection string. Ako u njemu piše korisničko ime i lozinka za bazu, ta lozinka je na svakom računalu u firmi.
Zatim izbrojite: koliko ljudi bi aplikaciju trebalo koristiti izvan ureda, na tabletu ili na terenu, a danas ne može?
Kako mi radimo
Upravo to radimo: postupno prebacujemo stare .NET aplikacije u web s Blazorom, ekran po ekran, bez prekida rada i bez godine čekanja. Krećemo od pregleda aplikacije i odluke koji je prvi ekran, a prvi novi Blazor ekran unutar vaše postojeće aplikacije obično vidite već nakon nekoliko tjedana. Prvi korak je besplatni razgovor od 30 minuta.
Ovaj članak služi općem informiranju i nije pravni, porezni, financijski ni drugi stručni savjet. Scenariji, primjeri i izračuni su ilustrativni. Uvjeti korištenja i odricanje od odgovornosti.