Blazor Hybrid vs .NET MAUI vs WPF: web, desktop ili oboje za poslovnu aplikaciju?
Što je Blazor Hybrid, kako se uspoređuje s WPF-om, .NET MAUI-jem, web aplikacijom i Electronom i kako modernizirati WinForms ili WPF bez prepisivanja.
Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 5 min čitanja
Puno firmi ima važnu WPF ili WinForms aplikaciju na svakom stolu. Radi, ali samo na Windowsima, svaka promjena znači novu instalaciju, i prije ili kasnije netko pita: treba li to postati web aplikacija? A što sa skladištem, terenom i tabletima?
Dugo je odgovor bio bolan izbor između desktopa i weba. Blazor Hybrid velik dio tog izbora uklanja: isti ekrani mogu raditi u desktop aplikaciji, na tabletu ili mobitelu i u pregledniku.
Što je Blazor Hybrid, ljudskim jezikom
U Blazor Hybrid aplikaciji Blazor komponente rade unutar prave desktop ili mobilne aplikacije. Izvršavaju se nativno u .NET-u, a ne u pregledniku i ne na WebAssemblyju, a samo se prikazuju kroz ugrađeni web prikaz. Zato imaju puni pristup uređaju: lokalnim datotekama, printerima, skenerima, serijskim portovima, kameri.
Komponenta koja to omogućuje, BlazorWebView, postoji za tri platforme:
- .NET MAUI: Windows, macOS, Android i iOS iz jednog projekta
- WPF: unutar postojeće WPF aplikacije
- Windows Forms: unutar postojeće WinForms aplikacije
Opcije jedna uz drugu
| Opcija | Radi na | Dobro za | Na što pripaziti |
|---|---|---|---|
| Ostati na WPF-u ili WinFormsu | Windows desktop | Stabilnu aplikaciju koja se rijetko mijenja | Tehnologija koja stari, samo Windows, teže zapošljavanje |
| Blazor unutar postojeće WPF ili WinForms aplikacije | Windows desktop | Postupnu modernizaciju: novi ekrani u Blazoru | Dvije tehnologije sučelja jedna uz drugu neko vrijeme |
| .NET MAUI Blazor Hybrid | Windows, macOS, Android, iOS | Jedno sučelje za desktop, tablet i mobitel, s pristupom uređaju | Za iOS treba Mac, aplikacije se distribuiraju instalacijama ili trgovinama |
| Blazor web aplikacija | Bilo koji preglednik | Većinu poslovnih aplikacija: bez instalacije, trenutna ažuriranja | Nema izravnog pristupa lokalnom hardveru |
| Electron | Desktop | Timove koji rade u JavaScriptu | Drugi jezik i stack, veće aplikacije |
Najzanimljiviji put: Blazor unutar WPF aplikacije koju već imate
Za firmu s velikom WPF ili WinForms aplikacijom najvrednija mogućnost nije MAUI, nego ovo: BlazorWebView se može staviti unutar postojeće aplikacije, pokraj starih ekrana. Novi i prerađeni ekrani rade se u Blazoru, a ostatak aplikacije ostaje kakav jest.
<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 živi u Razor biblioteci klasa koju dijeli s web aplikacijom. Kad dođe vrijeme, isti ekran radi u pregledniku bez prepisivanja. Ekran po ekran, desktop aplikacija tiho postaje web aplikacija, a korisnici ni u jednom trenutku ne ostaju bez alata koji radi.
Zajednički ekrani, različiti uređaji
Trik je u tome da zajedničke komponente ne razgovaraju izravno s hardverom, nego sa sučeljem. Svaka platforma daje svoju implementaciju:
public interface IBarcodeScanner
{
Task<string?> ScanAsync();
}
Zajednički ekran za narudžbe traži kod od IBarcodeScanner. U desktop aplikaciji u skladištu implementacija čita USB skener. Na mobitelu koristi kameru. U pregledniku korisnik upiše kod. Ekran je svugdje isti, a mijenja se samo implementacija iza sučelja.
Kad Blazor Hybrid ima smisla
- Aplikacija treba lokalni hardver: skenere, printere naljepnica, vage, serijske uređaje, lokalne datoteke.
- Korisnici rade bez pouzdane veze: skladišta, teren, proizvodne hale.
- Želite jedan skup ekrana za desktop, tablet i web, umjesto tri aplikacije.
- Imate veliku WPF ili WinForms aplikaciju i želite je modernizirati postupno, a ne prepisati.
Kad nema smisla
- Ako sve što aplikacija radi može raditi u pregledniku, obična Blazor web aplikacija je jednostavnija: bez instalacije, a svaki korisnik uvijek ima najnoviju verziju.
- Ako je aplikacija grafički zahtjevna, sa složenim crtanjem ili 3D-om, nativni WPF ili specijalizirani framework bolji su alat.
- Ako radite dotjeranu aplikaciju za krajnje korisnike za trgovine aplikacija, potpuno nativni mobilni razvoj obično je sigurniji izbor.
Iskreno o nedostacima
- Instalacija i ažuriranja. Desktop ili mobilna aplikacija mora se instalirati i ažurirati na svakom uređaju, a web aplikacija se ažurira jednom, na serveru.
- Web prikaz ovisi o platformi. Na Windowsima
BlazorWebViewkoristi WebView2, a stilovi se mogu malo drukčije prikazivati na različitim platformama, pa testirajte na uređajima koje vaši korisnici stvarno imaju. - Za iOS treba Mac. Izrada i objava za iOS traži Mac za build, čak i kad ostatak tima radi na Windowsima.
Pet pitanja prije odluke
- Treba li aplikaciji hardver ili datoteke na korisnikovom računalu?
- Rade li korisnici bez pouzdane veze?
- Koje uređaje koriste: samo Windows računala ili i tablete i mobitele?
- Imate li već veliku WPF ili WinForms aplikaciju koju vrijedi zadržati tijekom prelaska?
- Kako danas isporučujete ažuriranja i koliko često to želite?
Ako su odgovori “nema hardvera, dobra veza, samo računala”, radite Blazor web aplikaciju. Ako u igru uđu hardver, rad bez interneta ili više uređaja, Blazor Hybrid vrijedi ozbiljno razmotriti.
Kako desktop aplikacija korak po korak prelazi na web, opisujemo u članku o prelasku s WinFormsa i WPF-a na web, a koji način rada trebaju koristiti web ekrani u članku Blazor Server vs WebAssembly vs Auto.
Kako mi radimo
ProCoding je .NET studio iz Splita i Blazor isporučujemo u produkciju od 2020. Pomažemo vam odabrati između weba, desktopa i hibrida, postavljamo zajedničku biblioteku komponenti i selimo WPF i WinForms aplikacije ekran po ekran, a da korisnici ne ostanu bez alata koji radi. Više o našem radu s Blazorom, a prvi korak je besplatan razgovor od 30 minuta.
Izvori
- 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
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.