Blazor in produzione: guida pratica 2026 per developer .NET
Matteo Migliore

Matteo Migliore è un imprenditore e architetto software con oltre 25 anni di esperienza nello sviluppo di soluzioni basate su .NET e nell'evoluzione di architetture applicative per imprese e organizzazioni di alto profilo.

Ha guidato progetti enterprise, formato centinaia di sviluppatori e aiutato aziende di ogni dimensione a semplificare la complessità trasformando il software in guadagni per il business.

Luca lavora in una software house di Bologna e ha appena ricevuto una richiesta che conosce bene: riscrivere un gestionale interno aziendale, vecchio di otto anni, costruito in ASP.NET MVC con jQuery sparso ovunque. Il committente vuole un'interfaccia moderna, reattiva, e la vuole entro la fine dell'anno. Il team è composto da quattro sviluppatori solidi su C# e .NET, ma nessuno di loro è un frontend specialist. La domanda che gira in ufficio da una settimana è sempre la stessa: lo facciamo in React, in Angular, o proviamo finalmente Blazor?

È la stessa domanda che ricevo decine di volte all'anno, da team di ogni dimensione. E quasi sempre arriva carica di entusiasmo malriposto o di scetticismo ingiustificato. C'è chi vuole usare Blazor perchè "finalmente non devo più scrivere JavaScript", e chi lo evita perchè "ha sentito dire che è lento". Entrambe le posizioni sono superficiali. Blazor è una tecnologia matura, in produzione in migliaia di applicazioni reali, ma ha caratteristiche precise che lo rendono eccellente in alcuni scenari e inadeguato in altri.

Questo articolo non è un tutorial introduttivo nè un pezzo di marketing. È la guida pragmatica che avrei voluto avere prima di portare Blazor in produzione su progetti reali: cosa cambia tra i diversi rendering model, quali sono le performance vere (non quelle dei benchmark giocattolo), come si gestiscono SEO e autenticazione, quando conviene rispetto a React e Angular, e quali sono gli errori che vedo ripetersi nei team che lo adottano per la prima volta. Tutto nel contesto .NET e del mercato italiano del 2026.

Blazor è davvero pronto per la produzione nel 2026?

Partiamo dalla domanda che blocca molti team prima ancora di iniziare. La risposta breve è sì, e non da ieri. Blazor è in produzione in applicazioni aziendali reali da .NET 5, e con .NET 8 e .NET 9 ha raggiunto una maturità che lo rende una scelta solida per gestionali, portali interni, dashboard e applicazioni line-of-business.

Il punto è che "pronto per la produzione" non significa "adatto a qualsiasi scenario". Blazor è una famiglia di tecnologie, non un prodotto monolitico, e la sua idoneità dipende interamente da cosa devi costruire. Un gestionale interno usato da 300 dipendenti dietro autenticazione aziendale è uno scenario ideale. Un sito e-commerce pubblico con milioni di visitatori al mese e requisiti SEO aggressivi è uno scenario dove Blazor richiede molte più attenzioni e dove altre tecnologie possono essere più indicate.

La cosa importante da capire è che le critiche storiche a Blazor, peso eccessivo del download, problemi di SEO, latenza delle interazioni, erano legate a versioni specifiche e a rendering model specifici. Con l'unificazione introdotta in .NET 8, gran parte di quei limiti ha oggi una soluzione concreta nello stesso framework. Chi giudica Blazor sulla base di un articolo del 2021 sta giudicando una tecnologia che non esiste più nella stessa forma.

Se vuoi un quadro generale della tecnologia prima di entrare nei dettagli operativi, abbiamo una pagina dedicata che spiega cosa è Blazor e come si colloca nell'ecosistema .NET. Qui invece andiamo dritti su cosa devi sapere per portarlo in produzione senza sorprese.

I quattro rendering model di Blazor: Server, WebAssembly, Auto e SSR

Questa è la decisione architetturale più importante che prenderai con Blazor, e la fonte di gran parte della confusione. A differenza di React o Angular, dove il modello di esecuzione è sostanzialmente uno solo (codice JavaScript che gira nel browser), Blazor ti offre quattro modi diversi di eseguire gli stessi componenti. Sceglierli bene fa la differenza tra un progetto che vola e uno che frustra utenti e team.

Blazor Server: la logica resta sul server

In Blazor Server i componenti vengono eseguiti sul server. Il browser riceve solo una pagina iniziale leggera e una connessione SignalR persistente che fa da ponte: ogni click, ogni digitazione, ogni evento dell'interfaccia viaggia verso il server, viene elaborato lì, e il server rimanda al browser solo la differenza di interfaccia da applicare. Il vantaggio è evidente: il download iniziale è minimo, il codice non lascia mai il server, e hai accesso diretto a database e servizi backend senza esporre API. Lo svantaggio è altrettanto chiaro: ogni interazione richiede un round-trip di rete, quindi la reattività dipende dalla latenza, e il server mantiene in memoria lo stato di ogni utente connesso, il che pesa sulla scalabilità.

Blazor Server è la scelta naturale per applicazioni interne, dove gli utenti sono su una rete a bassa latenza e il numero di connessioni simultanee è prevedibile. Per un gestionale aziendale usato da qualche centinaio di dipendenti è spesso la soluzione più semplice ed efficace.

Blazor WebAssembly: tutto nel browser

In Blazor WebAssembly l'intera applicazione, runtime .NET incluso, viene scaricata nel browser ed eseguita lato client tramite WebAssembly. Dopo il caricamento iniziale, l'applicazione funziona anche offline, non carica il server per le interazioni dell'interfaccia, e si comporta come una vera Single Page Application. Il prezzo è il download iniziale più pesante, perchè il browser deve scaricare il runtime e gli assembly dell'applicazione, e il fatto che il codice gira sul client, quindi qualsiasi logica sensibile o accesso ai dati deve passare per API esposte e protette.

Auto: il meglio dei due mondi

La modalità Auto, introdotta con .NET 8, è il tentativo di Microsoft di risolvere il dilemma. Al primo accesso il componente viene servito in modalità Server, così l'utente ha reattività immediata senza attendere il download del runtime. Nel frattempo, in background, il browser scarica i bundle WebAssembly. Alle visite successive il componente gira interamente lato client. È un'ottima opzione per applicazioni che vogliono partenza rapida e poi indipendenza dal server, ma aggiunge complessità: la stessa pagina può girare in due contesti diversi, e devi scrivere codice che funzioni in entrambi.

SSR statico: rendering server senza interattività persistente

Il rendering server statico, sempre da .NET 8, renderizza i componenti in HTML completo sul server e lo invia al browser senza mantenere alcuna connessione persistente. È perfetto per pagine pubbliche, contenuti orientati alla SEO, landing page e tutto ciò che non richiede interattività ricca. Combinato con Enhanced Navigation e Stream Rendering, dà la sensazione di una SPA pur restando, alla base, rendering server. Con .NET 8 puoi mescolare tutti e quattro i model nello stesso progetto, decidendo il rendering pagina per pagina o addirittura componente per componente.

In pratica, una scelta tipica per un'applicazione moderna è: SSR statico per le pagine pubbliche e di marketing, e interattività Server o Auto per le aree applicative dietro login. Questo è il livello di flessibilità che fino a .NET 7 semplicemente non esisteva.

Sviluppatore .NET che confronta i rendering model di Blazor Server, WebAssembly, Auto e SSR

Come si dichiara il rendering model nel codice

Una delle cose che apprezzo di più del modello unificato di .NET 8 è quanto sia esplicito. Non devi creare progetti separati per scegliere il rendering: lo decidi con un attributo sul componente. Questo rende le decisioni architetturali leggibili direttamente nel codice, il che è prezioso quando il progetto cresce e nuovi sviluppatori entrano nel team.

// Pagina pubblica, solo rendering server statico per la SEO
@page "/catalogo"

// Area applicativa interattiva lato client
@page "/dashboard"
@rendermode InteractiveWebAssembly

// Modalità Auto: parte in Server, poi passa a WebAssembly
@page "/ordini"
@rendermode InteractiveAuto

La semplicità è ingannevole, però. Il fatto che basti un attributo per cambiare rendering model non significa che le conseguenze siano banali. Un componente marcato come interattivo WebAssembly non può più accedere direttamente al DbContext di Entity Framework, perchè gira nel browser. Un componente interattivo Server mantiene una connessione persistente che pesa sulla memoria del server. Capire dove gira il codice, e quindi cosa può e non può fare, è la competenza fondamentale per usare Blazor in produzione senza incidenti.

Un errore frequente nei team alle prime armi è marcare l'intera applicazione come interattiva, "per sicurezza", finendo per pagare i costi di tutti i rendering model senza i benefici di nessuno. La regola pragmatica è: parti da rendering statico, e attiva l'interattività solo dove l'esperienza utente la richiede davvero.

Performance reali di Blazor in produzione: cosa misurare davvero

Le discussioni sulle performance di Blazor sono spesso teatro di benchmark inutili. Conta poco quanto sia veloce a renderizzare un milione di righe in un loop sintetico. Conta moltissimo come si comporta l'applicazione reale, con i tuoi dati, sui dispositivi dei tuoi utenti, sulla loro connessione. Vediamo le metriche che contano davvero.

Tempo di primo caricamento

È il punto debole storico di Blazor WebAssembly. Un'applicazione WebAssembly con .NET 8, trimming aggressivo, compilazione ahead-of-time parziale e compressione Brotli scarica tipicamente tra 2 e 5 MB al primo accesso, contro circa 1-2 MB di una SPA React equivalente. Per applicazioni interne, dove gli utenti accedono ogni giorno e il payload viene messo in cache, questo è raramente un problema reale. Per siti pubblici dove ogni visitatore è nuovo, va misurato e ottimizzato con cura, oppure va evitato a favore del rendering server.

Blazor Server, al contrario, ha un primo caricamento leggerissimo, perchè il browser scarica solo HTML e lo script SignalR. Questo lo rende paradossalmente migliore di WebAssembly proprio dove ci si aspetterebbe il contrario: nella velocità percepita all'apertura.

Latenza delle interazioni

Qui il rapporto si inverte. In Blazor WebAssembly, dopo il caricamento, le interazioni sono istantanee perchè tutto gira localmente. In Blazor Server ogni interazione passa per la rete: con una latenza di 20 millisecondi l'esperienza è fluida, con 150 millisecondi inizia a essere percepibilmente lenta nei componenti molto reattivi come la digitazione in tempo reale o il drag and drop. Per questo Blazor Server brilla in reti aziendali a bassa latenza e soffre su connessioni mobili instabili.

Consumo di memoria sul server

È la metrica che molti team scoprono troppo tardi. Ogni utente connesso a un'applicazione Blazor Server mantiene un circuito attivo sul server, con lo stato dei suoi componenti in memoria. Mille utenti simultanei significano mille circuiti. Va dimensionato e testato sotto carico: non è un problema insormontabile, ma è una variabile che React e Angular semplicemente non hanno, perchè lì lo stato vive nel browser dell'utente.

La lezione pratica è una sola: misura sull'applicazione vera, non sui benchmark. Application Insights e gli strumenti di diagnostica di .NET ti danno i numeri che contano, tempo di primo render, dimensione del payload, numero di circuiti attivi, tempo di risposta delle interazioni. Decidere il rendering model senza questi dati è scommettere alla cieca.

Dashboard di monitoraggio delle performance di un'applicazione Blazor in produzione

Blazor e SEO: il problema esiste, ma ha una soluzione precisa

Per anni "Blazor non è buono per la SEO" è stata un'affermazione vera e ripetuta a ragione. Blazor WebAssembly puro renderizza i contenuti nel browser solo dopo aver scaricato il runtime ed eseguito l'applicazione. I crawler dei motori di ricerca, e soprattutto quelli che non eseguono JavaScript a fondo o impongono limiti di tempo, vedevano una pagina sostanzialmente vuota.

La soluzione, da .NET 8, è il rendering server statico. Le pagine vengono renderizzate in HTML completo sul server e inviate al crawler già pronte, esattamente come accade con una pagina ASP.NET MVC tradizionale o con Razor Pages. Il crawler riceve contenuto reale, indicizzabile, senza dover eseguire alcuno script. L'interattività, dove serve, viene aggiunta dopo con l'idratazione lato client, ma il contenuto per la SEO è già lì al primo byte.

Per un sito pubblico orientato alla SEO, oggi la ricetta corretta con Blazor è rendering server statico più Enhanced Navigation, attivando l'interattività solo nelle sezioni che ne hanno davvero bisogno. Questo elimina il problema storico e mette Blazor sullo stesso piano di un'applicazione server-rendered tradizionale, con il vantaggio di poter usare gli stessi componenti anche nelle aree interattive.

Va detto con onestà: se il tuo prodotto è un grande sito pubblico dove la SEO è la fonte primaria di traffico e ogni millisecondo di tempo di caricamento incide sul ranking, ecosistemi come Next.js hanno ancora un vantaggio di maturità e di tooling specifico. Ma per la maggior parte delle applicazioni .NET, dove le pagine pubbliche sono una parte del sistema e non l'intero prodotto, l'SSR statico di Blazor è più che sufficiente.

Autenticazione e sicurezza in Blazor: dove vive davvero la protezione

L'autenticazione è uno degli argomenti dove vedo più errori concettuali, e dove gli errori costano cari perchè diventano vulnerabilità di sicurezza. Il punto chiave da interiorizzare è che il modello di autenticazione cambia radicalmente a seconda di dove gira il codice.

Autenticazione in Blazor Server e nel rendering server

In Blazor Server e nel rendering server di .NET 8, l'autenticazione usa lo stack standard di ASP.NET Core: cookie, ASP.NET Core Identity o OpenID Connect verso Entra ID. I token e le credenziali vivono sul server, gestiti in modo sicuro, e il browser riceve solo un cookie di sessione. È il modello più sicuro e più semplice da gestire correttamente, perchè è lo stesso che usi in qualsiasi applicazione web server-side.

Autenticazione in Blazor WebAssembly

In WebAssembly la storia cambia. L'applicazione gira nel browser, quindi l'autenticazione è basata su token tramite OAuth 2.0 e OpenID Connect, con la libreria dedicata di Microsoft. I token vengono conservati nel browser, il che introduce considerazioni di sicurezza diverse: il token è accessibile al codice client, va protetto da attacchi cross-site scripting, e ha un ciclo di vita da gestire con cura tramite refresh token e scadenze brevi.

L'autorizzazione lato client è sempre cosmetica

Questo è il punto che voglio sottolineare con forza. I componenti AuthorizeView e l'attributo Authorize funzionano in entrambi i modelli e sono comodi per nascondere pulsanti e sezioni a chi non ha i permessi. Ma in WebAssembly questa è solo esperienza utente, non sicurezza: il codice gira nel browser e un utente malintenzionato può aggirarlo. La vera protezione deve sempre stare sull'API, sul server, dove l'utente non ha controllo. Un'applicazione Blazor WebAssembly sicura ha un backend che valida ogni richiesta indipendentemente da cosa mostra l'interfaccia.

Questo principio non è specifico di Blazor, vale per qualsiasi SPA, ma in Blazor genera confusione perchè la stessa logica C# può girare sia sul server sia sul client, e gli sviluppatori abituati al backend tendono a fidarsi del codice anche quando è migrato nel browser. La regola è semplice: se gira nel browser, non è sicuro, punto.

Quando conviene Blazor rispetto a React o Angular

È la domanda da cui siamo partiti con Luca, e merita una risposta onesta e priva di tifo da stadio. Non esiste una tecnologia vincente in assoluto: esiste la tecnologia giusta per un team specifico e un tipo di applicazione specifico.

Blazor conviene quando...

Il team è già forte su C# e .NET e non ha frontend specialist dedicati. In questo caso Blazor elimina il costo di mantenere due competenze separate e due ecosistemi separati. Conviene quando vuoi condividere modelli, regole di validazione e logica di business tra backend e frontend senza riscriverli in TypeScript: definisci una classe con i suoi attributi di validazione e la usi identica sul server e sul client. Conviene quando il progetto è un'applicazione gestionale o line-of-business dietro autenticazione, dove la SEO non conta e l'esperienza utente è quella di un'applicazione produttiva, non di un sito vetrina.

React o Angular convengono quando...

Il prodotto è pubblico, ad altissimo traffico, con requisiti SEO stringenti e ogni millisecondo di caricamento ha un impatto economico. Quando hai bisogno dell'enorme ecosistema npm e di librerie UI estremamente mature per scenari specifici, dai grafici complessi alle mappe interattive avanzate. Quando il team frontend è già specializzato in JavaScript e riscriverlo su .NET significherebbe buttare via competenze consolidate. Quando devi assumere sul mercato e cerchi un bacino di candidati più ampio: gli sviluppatori React sono semplicemente più numerosi.

La verità sul costo di apprendimento

Un argomento spesso sottovalutato a favore di Blazor è il costo di apprendimento per un team .NET. Uno sviluppatore C# produttivo diventa produttivo su Blazor in giorni, non in settimane, perchè il modello mentale, il linguaggio, gli strumenti e il debugging sono gli stessi del backend che già conosce. Lo stesso sviluppatore, messo su React, deve imparare un nuovo linguaggio, un nuovo paradigma di stato, un nuovo ecosistema di build, e convivere con il churn continuo delle librerie JavaScript. Per molte aziende italiane, dove i team sono piccoli e full-stack, questo è un fattore decisivo che pesa più di qualsiasi benchmark.

Se vuoi approfondire il quadro più ampio dello sviluppo web nell'ecosistema .NET, oltre la singola tecnologia, trovi spunti utili nel nostro corso di sviluppo web, che affronta le scelte architetturali frontend in modo trasversale.

Team di sviluppo che discute la scelta tra Blazor, React e Angular davanti a una lavagna

Gli errori più comuni quando si porta Blazor in produzione

Questi non sono errori teorici da manuale. Sono i problemi concreti che vedo emergere nei team che adottano Blazor per la prima volta, e che trasformano un progetto promettente in una fonte di frustrazione.

Errore 1: scegliere il rendering model per moda, non per contesto

Molti team scelgono WebAssembly perchè "è il futuro" o Server perchè "è più semplice", senza analizzare il loro scenario reale. La scelta del rendering model è una decisione architetturale che dipende da latenza di rete, numero di utenti simultanei, requisiti offline, importanza del primo caricamento e SEO. Sceglierlo per sentito dire è la prima causa di progetti Blazor che deludono.

Errore 2: ignorare la gestione delle disconnessioni in Blazor Server

La connessione SignalR di Blazor Server può cadere: rete instabile, computer che va in sospensione, timeout. Quando succede, l'utente vede di default un messaggio grigio poco rassicurante e perde il lavoro non salvato. Un'applicazione Blazor Server in produzione seria deve personalizzare l'esperienza di riconnessione, gestire la persistenza dello stato critico e comunicare chiaramente all'utente cosa sta succedendo. Trascurare questo aspetto significa garantirsi ticket di supporto e utenti scontenti.

Errore 3: trattare ogni componente come interattivo

Come accennato, marcare tutta l'applicazione come interattiva è comodo ma costoso. Paghi memoria sul server con Blazor Server, o dimensione del download con WebAssembly, anche per pagine che mostrano solo contenuto statico. La disciplina di attivare l'interattività solo dove serve è ciò che distingue un'applicazione Blazor ben progettata da una pesante e lenta.

Errore 4: non ottimizzare il payload WebAssembly

Pubblicare un'applicazione Blazor WebAssembly senza trimming, senza compressione Brotli e senza lazy loading degli assembly significa servire agli utenti un download molto più pesante del necessario. Sono ottimizzazioni standard, documentate, che richiedono configurazione minima ma che molti team dimenticano, salvo poi lamentarsi che "Blazor è lento da caricare".

Errore 5: fidarsi della logica lato client

Lo abbiamo visto parlando di sicurezza, ma vale la pena ripeterlo perchè è l'errore più pericoloso: mettere validazione, controlli di permesso o logica sensibile solo sul client in WebAssembly, dando per scontato che "tanto è codice C#". Il browser è territorio ostile. Ogni regola che conta va replicata e validata sul server.

Casi reali: dove Blazor sta dando i risultati migliori

La teoria è utile, ma è negli scenari concreti che si capisce dove una tecnologia rende. Ecco i tipi di applicazione dove vedo Blazor dare i risultati migliori nel mercato italiano.

Gestionali e applicazioni line-of-business

È il territorio d'elezione. Software per la gestione di ordini, magazzino, anagrafiche, fatturazione, pratiche interne: applicazioni usate quotidianamente da personale aziendale, dietro autenticazione, dove conta la produttività e non la vetrina pubblica. Qui Blazor Server brilla per la semplicità di accesso ai dati e per il caricamento istantaneo, e i team .NET sono massimamente produttivi.

Dashboard e strumenti interni

Pannelli di controllo, dashboard di monitoraggio, strumenti di amministrazione: applicazioni con tabelle, filtri, grafici e form complessi. La possibilità di riusare i modelli del backend e di scrivere la logica di filtro una volta sola, condivisa tra server e interfaccia, riduce drasticamente il codice e i bug da disallineamento tra frontend e backend.

Modernizzazione di applicazioni legacy

Molte aziende italiane hanno gestionali in Windows Forms o WPF datati, o in ASP.NET MVC con jQuery, esattamente come il caso di Luca. Blazor offre un percorso di migrazione naturale: il team riusa le competenze C#, può riportare gran parte della logica esistente, e moderna l'interfaccia senza riscrivere da zero in un linguaggio nuovo. Per chi viene dal mondo desktop, la transizione concettuale da componenti WPF a componenti Blazor è sorprendentemente fluida.

Dove invece Blazor non è la scelta giusta

Per onestà, lo ribadisco: grandi siti pubblici ad altissimo traffico con SEO come fonte primaria, applicazioni che richiedono librerie UI specialistiche disponibili solo in ecosistema JavaScript, prodotti dove il team frontend è già consolidato su React o Angular. In questi casi forzare Blazor è una decisione ideologica, non ingegneristica.

Come prepararsi a usare Blazor in produzione sul serio

Arrivare in produzione con Blazor senza incidenti richiede di costruire alcune competenze specifiche che vanno oltre il "saper scrivere un componente". Ecco le aree su cui investire prima di mettere un'applicazione Blazor nelle mani degli utenti.

La prima è la comprensione profonda dei rendering model e delle loro implicazioni: dove gira il codice, cosa può fare in ciascun contesto, come passare i dati tra server e client in modo sicuro. È la competenza che separa chi usa Blazor con consapevolezza da chi lo subisce. La seconda è il ciclo di vita dei componenti e la gestione dello stato: capire quando un componente viene renderizzato, quando viene idratato, come si propagano i cambiamenti, evita una categoria intera di bug sottili e difficili da diagnosticare.

La terza è l'integrazione con il resto dell'ecosistema .NET, perchè Blazor non vive isolato: si appoggia ad ASP.NET Core per l'hosting, a Entity Framework per i dati, a SignalR per la comunicazione, ad Application Insights per l'osservabilità. Padroneggiare Blazor in produzione significa padroneggiare questo insieme, non solo la sintassi dei componenti. La quarta è la disciplina delle performance e della sicurezza che abbiamo discusso: misurare prima di ottimizzare, e non fidarsi mai del client.

Costruire queste competenze da soli, a tentativi, su un progetto in produzione, è possibile ma costoso in termini di errori e tempo. Un percorso strutturato accorcia drasticamente la curva, perchè ti porta direttamente sulle decisioni che contano invece di farti scoprire i problemi quando sono già in produzione. È esattamente l'approccio del nostro corso Blazor, pensato per developer .NET che vogliono portare Blazor in produzione con cognizione di causa e non per sentito dire. Chi cerca anche solo informazioni preliminari trova molto valore nel valutare attentamente un corso Blazor strutturato prima di improvvisare su un progetto reale.

Conclusione: Blazor è una scelta ingegneristica, non ideologica

Tornando a Luca e al suo team di Bologna: la risposta corretta alla loro domanda non è "usa Blazor" nè "usa React". È "analizza il tuo contesto e scegli di conseguenza". Nel loro caso specifico, un gestionale interno, un team forte su .NET senza frontend specialist, nessun requisito SEO, la risposta pende nettamente verso Blazor, probabilmente in modalità Server o Auto. Ma è il ragionamento ad aver portato lì, non la moda.

Blazor nel 2026 è una tecnologia matura, in produzione in migliaia di applicazioni reali, con un modello di rendering unificato che ha risolto gran parte dei limiti storici. Non è la risposta a tutto, e chi te lo presenta come tale ti sta vendendo qualcosa. È invece uno strumento eccellente quando il contesto è quello giusto: team .NET, applicazioni line-of-business, voglia di smettere di mantenere due competenze separate per fare la stessa cosa.

I punti di attenzione, peso del bundle WebAssembly, gestione delle disconnessioni Server, SEO sui contenuti pubblici, sono tutti reali ma tutti con soluzioni note e documentate. Conoscerli in anticipo è la differenza tra un'adozione serena e una serie di sorprese spiacevoli in produzione. La tecnologia c'è, è solida, e per il developer .NET italiano rappresenta un'opportunità concreta di restare full-stack senza disperdersi su due ecosistemi.

Il percorso formativo che proponiamo in BestDeveloper su Blazor è progettato esattamente per questo: non per insegnarti la sintassi che trovi nella documentazione, ma per portarti sulle decisioni architetturali che contano in produzione, attraverso casi reali e l'esperienza di chi Blazor lo ha già messo in mano agli utenti. Perchè la differenza tra un'applicazione Blazor che funziona e una che vola si gioca proprio lì.

Domande frequenti

Sì. Blazor è in produzione in migliaia di applicazioni aziendali da .NET 5 in poi, e con .NET 8 e .NET 9 ha raggiunto una maturità che lo rende una scelta solida per gestionali, portali interni, dashboard e applicazioni line-of-business. Il rendering model unificato introdotto con .NET 8 (Server, WebAssembly, Auto e SSR statico nello stesso progetto) ha eliminato gran parte delle limitazioni storiche. Le aree dove serve ancora attenzione sono il caricamento iniziale del bundle WebAssembly, la gestione delle disconnessioni in Blazor Server e la SEO su contenuti pubblici, tutti problemi con soluzioni note e documentate.

Blazor Server esegue la logica del componente sul server e sincronizza l'interfaccia con il browser tramite una connessione SignalR persistente: il download iniziale è leggero, ma ogni interazione richiede un round-trip di rete e il server mantiene lo stato di ogni utente connesso. Blazor WebAssembly scarica il runtime .NET e l'applicazione nel browser ed esegue tutto lato client: dopo il caricamento iniziale funziona anche offline e non carica il server, ma il primo download è più pesante. Con .NET 8 esiste anche la modalità Auto, che parte in Server per la reattività immediata e passa a WebAssembly dopo aver scaricato i bundle in background.

Dipende dal rendering model. Blazor WebAssembly puro renderizza nel browser dopo il caricamento del runtime, quindi è problematico per i crawler che non eseguono JavaScript a lungo e per i tempi di indicizzazione. La soluzione introdotta con .NET 8 è il rendering server statico (SSR): le pagine vengono renderizzate in HTML completo sul server e inviate al crawler già pronte, con eventuale interattività aggiunta dopo. Per un sito pubblico orientato alla SEO, oggi si usa SSR statico più Enhanced Navigation e si attiva l'interattività solo dove serve. Per applicazioni dietro login la SEO non è rilevante e qualsiasi modello va bene.

Blazor conviene quando il team è già forte su C# e .NET, quando si vuole condividere modelli e logica di validazione tra backend e frontend senza riscriverli, e quando il progetto è un'applicazione gestionale o line-of-business dietro autenticazione. React e Angular restano spesso preferibili per prodotti pubblici ad altissimo traffico con requisiti SEO stringenti, per app che necessitano dell'ecosistema npm e di librerie UI mature, o quando il team frontend è già specializzato in JavaScript. La scelta è di contesto: non c'è un vincitore assoluto, c'è la tecnologia giusta per il team e il tipo di applicazione.

Un'applicazione Blazor WebAssembly con .NET 8 e ahead-of-time compilation parziale, trimming aggressivo e compressione Brotli scarica tipicamente tra 2 e 5 MB al primo accesso, contro i circa 1-2 MB di una SPA React equivalente. Il payload viene poi messo in cache e i caricamenti successivi sono quasi istantanei. Il trimming del runtime, il lazy loading degli assembly per le aree meno usate e la pre-renderizzazione lato server riducono sensibilmente il tempo di primo render percepito. Per applicazioni interne il peso iniziale è raramente un problema; per siti pubblici ad alto traffico va misurato e ottimizzato con cura.

In Blazor Server e nel rendering server di .NET 8 l'autenticazione usa lo stack standard di ASP.NET Core: cookie, ASP.NET Core Identity o OpenID Connect verso Entra ID, con i token gestiti lato server in modo sicuro. In Blazor WebAssembly l'autenticazione è basata su token (OAuth 2.0 e OpenID Connect tramite la libreria Microsoft.AspNetCore.Components.WebAssembly.Authentication), con i token conservati nel browser e quindi con considerazioni di sicurezza diverse. Il componente AuthorizeView e l'attributo Authorize funzionano in entrambi i modelli, ma l'autorizzazione lato client va sempre considerata cosmetica: la vera protezione deve stare sull'API.

Lascia i tuoi dati nel form qui sotto

Matteo Migliore

Matteo Migliore è un imprenditore e architetto software con oltre 25 anni di esperienza nello sviluppo di soluzioni basate su .NET e nell'evoluzione di architetture applicative per imprese e organizzazioni di alto profilo.

Nel corso della sua carriera ha collaborato con realtà come Cotonella, Il Sole 24 Ore, FIAT e NATO, guidando team nello sviluppo di piattaforme scalabili e modernizzando ecosistemi legacy complessi.

Ha formato centinaia di sviluppatori e affiancato aziende di ogni dimensione nel trasformare il software in un vantaggio competitivo, riducendo il debito tecnico e portando risultati concreti in tempi misurabili.

Stai leggendo perché vuoi smettere di rattoppare software fragile.Scopri il metodo per progettare sistemi che reggono nel tempo.