Blazor i .NET

Blazor ili MVC i Razor Pages za internu poslovnu aplikaciju?

MVC i Razor Pages su provjereni, a Microsoft za većinu web sučelja preporučuje Blazor. Gdje se razlika vidi i zašto rijetko morate birati samo jedno.

Vlado Pandžić

Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 4 min čitanja

Sadržaj
  1. Razlika u tri rečenice
  2. Ista forma u oba
  3. Usporedba po onome što je važno poslovanju
  4. Kada MVC ili Razor Pages ostaje pravi izbor
  5. Rijetko morate birati samo jedno
  6. Pet pitanja prije odluke
  7. Kako mi radimo

.NET tim kreće s internom aplikacijom: narudžbe, odobrenja, izvještaji. Pola tima zna ASP.NET MVC ili Razor Pages u dušu, a oba su provjerena, stabilna i dobro dokumentirana. Netko predloži Blazor. Isplati li se?

Microsoftov vodič za odabir web sučelja je jasan: Blazor se preporučuje za većinu web scenarija. Ali to ne znači da svaku MVC aplikaciju treba prepisati. Prava pitanja su koliko su ekrani interaktivni i što već imate.

Razlika u tri rečenice

  • MVC: kontroleri primaju zahtjev, pripremaju podatke i vraćaju pogled (view). Svaki klik koji treba server novi je zahtjev.
  • Razor Pages: ista ideja, organizirana po stranicama umjesto po kontrolerima. Jednostavnije za aplikacije s puno formi.
  • Blazor: ekran se slaže od C# komponenti. Mogu se renderirati na serveru kao Razor Pages ili raditi interaktivno, na serveru ili u pregledniku preko WebAssemblyja.

Ista forma u oba

Jednostavna forma za novu narudžbu. U Razor Pages to su stranica i njezin handler:

@page
@model NewOrderModel

<form method="post">
    <input asp-for="Order.Customer" />
    <span asp-validation-for="Order.Customer"></span>
    <button>Save</button>
</form>
public class NewOrderModel(OrderService orders) : PageModel
{
    [BindProperty]
    public OrderInput Order { get; set; } = new();

    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid)
            return Page();

        await orders.CreateAsync(Order);
        return RedirectToPage("Index");
    }
}

U Blazoru je to jedna komponenta:

@inject OrderService Orders
@inject NavigationManager Navigation

<EditForm Model="Order" OnValidSubmit="SaveAsync" FormName="new-order">
    <DataAnnotationsValidator />
    <InputText @bind-Value="Order.Customer" />
    <ValidationMessage For="() => Order.Customer" />
    <button>Save</button>
</EditForm>

@code {
    [SupplyParameterFromForm]
    private OrderInput? Order { get; set; }

    protected override void OnInitialized() => Order ??= new();

    private async Task SaveAsync()
    {
        await Orders.CreateAsync(Order!);
        Navigation.NavigateTo("/orders");
    }
}

Za jednostavnu formu to je otprilike jednako posla. Razlika se pojavi čim ekran mora reagirati: cijena se preračuna kad se promijeni količina, drugi padajući izbornik ovisi o prvom, popis se filtrira dok tipkate. U MVC-u i Razor Pagesu to je JavaScript uz C#. U Blazoru ostaje u C#-u, u istoj komponenti.

Usporedba po onome što je važno poslovanju

Blazor MVC i Razor Pages
Interaktivni ekrani U C#-u, bez zasebnog JavaScripta JavaScript ili biblioteka poput htmx-a, uz C#
Jednostavne forme i popisi Jednako lako Jednako lako i vrlo zrelo
Dijelovi ekrana za višekratnu upotrebu Komponente, kroz cijelu aplikaciju Partial viewovi i tag helperi, manje prirodno
Javne stranice i SEO Dobro uz statično renderiranje na serveru Odlično, prirodno
Resursi servera Interaktivni server mode drži vezu za svaku otvorenu karticu Zahtjev, odgovor, ništa se ne čuva
Tim C# developeri brzo postanu produktivni Većina .NET developera ga već zna
Postojeća aplikacija Može se dodati u nju, ekran po ekran Ostaje kakva jest

Redak o serveru zaslužuje rečenicu. Blazor u interaktivnom server modu drži živu vezu za svaku otvorenu karticu. Za internu aplikaciju s nekoliko stotina korisnika to nije problem. Za javnu stranicu s tisućama posjetitelja koristite za te stranice statično renderiranje ili WebAssembly. Kada koristiti što, pišemo u članku Blazor Server ili WebAssembly.

Kada MVC ili Razor Pages ostaje pravi izbor

  • Velika MVC aplikacija već radi. Prepisivati je samo radi promjene frameworka rijetko se isplati.
  • Uglavnom forme i statične stranice, s malo interakcije na ekranu.
  • Javni sadržaj koji se mora brzo otvarati i rangirati na Googleu.
  • Tim koji dobro zna MVC i ne treba bogatije ekrane.

Rijetko morate birati samo jedno

Blazor komponente mogu živjeti unutar postojeće MVC ili Razor Pages aplikacije. Zato je najsigurniji put postupan: postojeći ekrani ostaju kakvi jesu, a novi, interaktivniji, pišu se u Blazoru. Aplikacija se tako s vremenom mijenja tempom koji poslovanju odgovara, bez velikog prepisivanja. Isti pristup radi i za starije aplikacije, pogledajte članak o migraciji s Web Formsa na Blazor.

Pet pitanja prije odluke

  1. Koliko su aplikacije forme i popisi, a koliko ekrani koji reagiraju dok radite?
  2. Postoji li već MVC ili Razor Pages aplikacija i radi li?
  3. Je li aplikacija interna ili iza prijave, ili je javna i ovisi o Googleu?
  4. Koliko će je korisnika imati otvorenu u isto vrijeme?
  5. Tko je održava za pet godina i što ti ljudi znaju?

Ako odgovori upućuju na interaktivne ekrane, prijavu i C# tim, za novi posao izaberite Blazor. Ako upućuju na MVC aplikaciju koja radi i uglavnom ima forme, zadržite je i dodajte Blazor samo gdje ekran to stvarno treba. Kako se Blazor uspoređuje s JavaScript frameworcima, pišemo u člancima Blazor ili Angular i Blazor ili React.

Kako mi radimo

ProCoding je .NET studio iz Splita. Održavamo MVC i Razor Pages aplikacije, a Blazor isporučujemo u produkciju od 2020., pa nemamo razloga gurati jedno ili drugo. Pomažemo vam odabrati, gradimo nove Blazor aplikacije i uvodimo Blazor u postojeće aplikacije ekran po ekran. Prvi korak je besplatan razgovor od 30 minuta.

Izvori

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.

Povezani članci

© 2026 ProCoding — Sva prava pridržana.Impresum i privatnostUvjeti korištenjaSplit, Hrvatska