Blazor vs React za poslovne aplikacije: što vas manje košta?
Blazor ili React za vašu iduću poslovnu aplikaciju? Usporedba po timu, zapošljavanju, održavanju i trošku, s istim ekranom u oba i kad React pobjeđuje.
Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 5 min čitanja
Rezultati za “Blazor vs React” puni su benchmarka i mišljenja developera. Za firmu koja radi poslovnu aplikaciju važnije je drugo pitanje: koji izbor znači manje ljudi, manje dvostrukog posla i manje iznenađenja u idućih pet godina?
Kratki odgovor: ako vaš tim piše u C#-u, a aplikacija je interna ili iza prijave, Blazor vas obično košta manje. Ako radite javni proizvod za puno korisnika, s frontend timom i puno interaktivnosti, React je bolji izbor. Najveća razlika nije u tehnologiji, nego u tome tko radi ekrane.
Isti ekran u oba
Razliku je najlakše vidjeti na jednom malom ekranu: popis otvorenih narudžbi s gumbom za osvježavanje.
U Reactu ekran živi u JavaScriptu ili TypeScriptu i podatke dohvaća s backenda preko API-ja:
type Order = { number: string; customer: string; total: number };
export function OpenOrders() {
const [orders, setOrders] = useState<Order[]>([]);
const load = () =>
fetch('/api/orders/open')
.then((response) => response.json())
.then(setOrders);
useEffect(() => { load(); }, []);
return (
<>
<h2>Open orders: {orders.length}</h2>
<button onClick={load}>Refresh</button>
</>
);
}
Za to .NET backend treba endpoint, koji se mora zaštititi, verzionirati i dokumentirati kao i svaki drugi:
app.MapGet("/api/orders/open", (OrderService orders) => orders.GetOpenAsync())
.RequireAuthorization();
U Blazoru sa serverskim iscrtavanjem cijeli ekran je jedna C# komponenta koja izravno poziva isti servis:
@inject OrderService Orders
<h2>Open orders: @openOrders.Count</h2>
<button @onclick="LoadAsync">Refresh</button>
@code {
private List<Order> openOrders = [];
protected override Task OnInitializedAsync() => LoadAsync();
private async Task LoadAsync() => openOrders = await Orders.GetOpenAsync();
}
U Reactu tip Order postoji dvaput, jednom u C#-u i jednom u TypeScriptu, a često i pravila validacije. Na jednom ekranu to je sitnica. U aplikaciji sa stotinu ekrana to je sloj posla koji raste sa svakom promjenom.
Pošteno je reći da i Blazor aplikacija koja radi u pregledniku na WebAssemblyju treba API. Razlika je u tome što se modeli i validacija i dalje mogu dijeliti, jer su obje strane C#.
Usporedba po onome što je važno firmi
| Blazor | React | |
|---|---|---|
| Tko radi ekrane | Isti C# developeri koji rade backend | Obično zaseban frontend developer ili full-stack developeri u dva jezika |
| Zapošljavanje | Iz bazena .NET developera | Iz puno većeg bazena frontend developera |
| Gotove komponente | Dovoljno za poslovne aplikacije: tablice, forme, grafovi | Najveći ekosustav koji postoji |
| Prvo učitavanje | Brzo u serverskom načinu, veće prvo preuzimanje na WebAssemblyju | Brzo, posebno uz frameworke poput Next.js-a |
| Javne stranice i SEO | Moguće, ali nije mu jača strana | Jako, posebno uz Next.js |
| Zajednički kod s backendom | Iste klase, validacija i pravila | Drugi jezik, pa se tipovi i validacija pišu dvaput |
| Nadogradnje kroz pet godina | Jedna nadogradnja .NET-a po ciklusu dugoročne podrške | Puno npm paketa koji se mijenjaju svaki svojim tempom |
| Koliko stackova održavate | Jedan | Dva: JavaScript i .NET |
Tipičan scenarij
Uzmimo distributersku firmu s tri C# developera koji održavaju integracije s ERP-om. Firma želi novi portal na kojem 200 zaposlenika prati narudžbe i isporuke.
S Blazorom portal rade ista tri čovjeka. Ekrani koriste postojeće servise i validaciju, a svaki novi ekran je jedna komponenta.
S Reactom postoje dvije opcije. Firma zapošljava frontend developera, sa svim zapošljavanjem, uvođenjem u posao i koordinacijom koje to donosi. Ili tri C# developera uče React i TypeScript, rade API endpoint za svaki ekran i usklađuju tipove na obje strane.
Nijedan put nije pogrešan. Ali za ovakvu aplikaciju drugi košta više na svakom novom ekranu, dokle god aplikacija živi.
Iskreno o performansama i popularnosti
- Performanse. React se brzo učitava i radi potpuno u pregledniku. Blazor se u serverskom načinu isto brzo otvara, ali svaki klik putuje do servera, što se na dobroj vezi ne primijeti, a na lošoj se osjeti. Blazor na WebAssemblyju ima veće prvo preuzimanje, koje se poslije čuva u pregledniku. Za internu aplikaciju koja se otvara svaki dan to rijetko išta odlučuje. Za javnu stranicu koja se mora otvoriti za sekundu na mobitelu, odlučuje.
- Popularnost. React je daleko rašireniji, a Blazor je u usporedbi niša. To je važno kad trebate zaposliti frontend stručnjake. Puno je manje važno kad je vaš tim već C#.
Kad je React bolji izbor
- javni proizvod za puno korisnika koji ovisi o prometu s Googlea
- vrlo bogata interaktivnost: editori, povlačenje i ispuštanje, puno animacija
- firma koja već ima frontend tim koji radi u JavaScriptu
- mobilna aplikacija u React Nativeu koja treba dijeliti kod s webom
A React na frontendu s .NET-om na backendu posve je zdrava arhitektura koju koriste mnoge firme. .NET backend je isti u oba slučaja.
Pet pitanja prije odluke
- Tko će raditi i održavati ekrane: ljudi koji znaju C# ili frontend developeri?
- Je li aplikacija interna ili iza prijave, ili je javna i ovisi o Googleu?
- Koliko vaše poslovne logike već živi u .NET-u?
- Treba li vam vrlo bogata interaktivnost ili uglavnom forme, tablice i izvještaji?
- Koga realno možete zaposliti tamo gdje jeste, za dvije godine?
Ako odgovori upućuju na C# tim, prijavu i logiku koja već živi u .NET-u, birajte Blazor. Ako upućuju na frontend tim, javnu publiku i bogato sučelje, birajte React, uz .NET backend.
Je li sam Blazor siguran izbor za iduće godine, pisali smo u članku Je li Blazor još relevantan 2026.?, a ako već imate Blazor aplikaciju koja je postala spora, pogledajte sedam najčešćih uzroka.
Kako mi radimo
ProCoding je .NET studio iz Splita. Blazor isporučujemo u produkciju od 2020., a radimo i .NET backende s kojima razgovaraju React frontendi, pa nemamo razloga gurati jedno ili drugo. Pomažemo vam odabrati, izrađujemo nove Blazor aplikacije i selimo starije aplikacije ekran po ekran. Prvi korak je besplatan razgovor od 30 minuta.
Izvori
- ASP.NET Core Blazor, Microsoft Learn
- ASP.NET Core Blazor render modes, Microsoft Learn
- React documentation, react.dev
- .NET and .NET Core support policy, Microsoft
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.