3 messaggi dal 16 novembre 2019
Sto incominciando a studiare Blazor per prepararmi ad una futura migrazione di un'applicazione gestionale realizzata in ASP.NET Web Forms.
Vorrei porre alcune domande per capire da chi ne sa più di me, se alcune funzionalità della mia applicazione potranno essere convertite.

Domanda 1.
La mia applicazione è multi aziendale e un utente può avere menu diversi per azienda.
Semplificando al massimo questo è il flusso principale:
1. inserendo l'url appare la pagina di login (la pagina Default.aspx fa il redirect a Login.aspx)
2. se le credenziali sono valide la pagina Login.aspx fa il redirect a Menu.aspx
3. la pagina Menu.aspx presenta il menu principale dell'azienda di default dell'utente con le funzioni a cui l'utente è abilitato
4. se l'utente è abilitato ad altre aziende può cambiare l'azienda ottenendo un nuovo menu
5. se l'utente effettua il logout la pagina Menu.aspx fa il redirect a Login.aspx.

In Web Forms utilizzando Response.Redirect riesco ad effettuare la navigazione tra le pagine senza problemi.

In Blazor che utilizza un modello SPA è possibile realizzare lo stesso flusso di navigazione tra le pagine?

Domanda 2.
Qualcuno mi sa spiegare:
- la differenza tra una Razor Page (.cshtml) e un Componente Blazor (.razor) con la direttiva @page
- la differenza tra un Componente Blazor con la direttiva @page e un Componente Blazor senza @page

Domanda 3.
In un'applicazione Blazor ci può essere un'unica Razor Page (mi ricorda la MasterPage ASP.NET)?

In caso affermativo significa che tutte le librerie JavaScript utilizzate (ad esempio jQuery, Bootstrap, Popper, DataTables.js, gijgo.js, ecc) devono essere definite nella Razor Page anche se servono solo in alcune pagine?

Per il momento mi fermo qui.

Ringrazio in anticipo a chi potrà darmi qualche dritta in questa fase di preparazione alla migrazione.

Salvo
Ciao!

anticipo che non ho mai avuto occasione di migrare un applicazione da ASP.NET Web Forms a Blazor, posso risponderti parzialmente con la relativa poca esperienza che ho.

prima di tutto è giusto sottolineare che come "Blazor" hai 2 tipi di opzione: Blazor Server o Blazor WASM (client).
queste due sebbene simili all'apparenza , in realtà si comportano in modo completamente diverso e detto molto semplicemente (ma veramente terra-terra) Blazor Server gira su un server e quindi puoi usare tutte le funzionalità del framework (come accedere direttamente a un db SQL ecc).
con Blazor WASM l'applicazione viene scaricata direttamente sul client e gira sul browser.. di conseguenza avrai bisogno di un layer intermedio (un applicazione web API) per la comunicazione con un db.

Personalmente in realtà aziendali medio piccole e con database pre-esistenti ho sempre usato blazor server, creando strutture simili a quelle della tua domanda 1 (anche se non avrei nessun suggerimento per un eventuale migrazione dal tuo codice esistente).

Per quanto riguarda la domanda 2, la risposta di nuovo molto superficiale:
Nel caso di Razor Page e componente Blazor con direttiva @page, il comportamento è estremamente simile MA il primo viene creato sul server e inviato al client e ogni interazione diretta (un click a un pulsante per dire) fa una chiamata al server che reenderizza nuovamente la pagina e la presenta.
Nel caso di un componente Page di Blazor, questo dipende se si tratta di Blazor Server o WASM: nel caso Server, le pagine ( e tutti i componenti) sono collegati al client con una connessione diretta continua (utilizzando una connessione SignalR) che praticamente permette l'update dei valori o l'esecuzione di metodi senza effettuare il refresh completo della pagina. Nel caso di Blazor WASM l'esecuzione è effettuata completamente dal lato client senza connessione diretta continua.

I componenti blazor senza direttiva page si comportano esattamente allo stesso modo.. semplicemente una Blazor "page" ospiterà diversi componenti senza direttiva "page".
Immagina una Blazor "page" che visualizza un form di inserimento e una tabella.. probabilmente nella pagina avrai un componente blazor per il form e un altro componente blazor per la tabella, che in base a come viene sviluppato il software, potrai riutilizzare ovunque ne hai la necessità, isolando porzioni di codice.

Per la domanda 3: non conosco la MasterPage di ASP.NET ma in Blazor Server esiste un file chiamato _Host dove vengono definite tutte le librerie che andrai ad utilizzare nel progetto mentre nelle applicazioni Blazor WASM il file è index.html

Chiedo scusa in anticipo per la superficialità delle spiegazioni, a te e a chiunque più esperto che verrà a leggere questa risposta!
a disposizione!
Maurizio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.