Ciclo di vita della pagina MVC spiegato in un linguaggio semplice

Pubblicato: 2021-11-26

Questo articolo si concentrerà sul ciclo di vita dell'applicazione MVC e su come l'applicazione elabora una richiesta attraverso il suo passaggio attraverso i componenti dell'applicazione. In un ciclo di vita MVC sono presenti due cicli di vita . Questi due cicli di vita sono:

  • Il ciclo di vita dell'applicazione
  • Il ciclo di vita della richiesta.

Sommario

Ciclo di vita dell'applicazione

Il ciclo di vita dell'applicazione generalmente indica il momento in cui inizia l'esecuzione del processo dell'applicazione. Per indicare il ciclo di vita dell'applicazione MVC , vengono contrassegnati l'inizio e la fine dell'applicazione.

Il ciclo di vita della richiesta

Il ciclo di vita della richiesta indica la serie di eventi che si verificano ogni volta che l'applicazione gestisce una richiesta HTTP. Il routing è il punto di ingresso per iniziare qualsiasi applicazione dell'MVC. Quando viene effettuata una richiesta alla piattaforma ASP.NET, viene presa la decisione su come gestire la richiesta attraverso il modulo di routing. Il termine modulo indica i componenti di .NET, che vengono utilizzati per aggiungere funzionalità al codice. È responsabilità dei moduli di instradamento far corrispondere l'URL in arrivo ai rispettivi percorsi definiti nell'applicazione. Ad ogni route è associato un route handler, che segna il punto di ingresso nel framework di MVC.

Il framework di MVC è responsabile della gestione della conversione dei dati del percorso in controllori che gestiranno ulteriormente le richieste. Una volta completata la creazione del Controller, il passaggio successivo è l'azione. Questo viene fatto attraverso il componente di action invoker, che seleziona un metodo di azione per invocare il Controller.

Una volta completata la preparazione per il risultato dell'azione, il passaggio successivo è l'esecuzione del risultato. Viene creata una fase di separazione per il risultato dell'esecuzione del risultato. Per un risultato del tipo di visualizzazione, l'applicazione chiamerà il motore di visualizzazione e troverà e aiuterà nel rendering della visualizzazione. Se il risultato non è una vista, l'esecuzione dell'azione avverrà da sola. È l'esecuzione del risultato che genera la risposta effettiva alla richiesta HTTP originale.

La maggior parte dei componenti è nota agli sviluppatori che vengono utilizzati per elaborare la richiesta. Nella maggior parte dei casi, si sta lavorando sui metodi e sui controller relativi alle azioni. Inoltre, si stanno lavorando su diversi risultati e viste dell'azione. Ma ci sono anche altri componenti nell'ambito di MVC. Potrebbero esserci molte domande nella propria mente su come viene eseguito il flusso di richieste attraverso i diversi componenti o il ruolo del modulo HTTP e il gestore durante l'elaborazione della richiesta. Poiché il framework MVC è un framework di sviluppo web, devono esserci moduli dell'HHTP e dei gestori HTTP nella pipeline MVC del framework.

Molti componenti sono presenti nel ciclo di vita della pagina MVC , a parte il Controller e le modalità di azione.

UrlRoutingModule

Questo è un tipo di modulo HTTP. Ogni volta che viene effettuata una richiesta per la prima volta, viene intercettata tramite l'UrlRoutingModule. In questo modulo si decide se l'applicazione MVC debba gestire la richiesta. UrlRoutingModule seleziona il primo percorso che corrisponde.

Come viene abbinata la richiesta con le route presenti nell'applicazione MVC tramite l'UrlRoutingModule?

Osservando il metodo di RegisterRoutes, che viene chiamato da global.asax, si possono vedere le rotte aggiunte alla RouteCollection delle rotte. La chiamata del metodo viene eseguita dal gestore eventi in application_start di global.asax.

Fonte

Come vengono definiti i percorsi nel RouteHandler?

Le rotte sono definite come metodi di estensione, come si può vedere nel metodo delle maproute. Il gestore delle rotte è associato a tutte le rotte.

Il metodo dell'UrlRoutingModule è definito nel modo seguente.

Fonte

Attraverso la spiegazione di cui sopra, è possibile sapere che UrlRoutingModule conosce tutti i percorsi definiti nell'applicazione. Pertanto, il percorso corretto può essere abbinato alla richiesta nell'applicazione.

Un punto importante da notare è che il modulo UrlRoutingModule è coinvolto nella selezione del primo percorso corrispondente. Quindi, ogni volta che viene rilevata la corrispondenza, il processo di scansione si interrompe. Se riassumiamo ciò che accade in questa fase, il gestore del percorso è collegato ai percorsi tramite U RLRoutingModule.

RouteHandler

Attraverso il metodo del maproute, i percorsi vengono collegati alle istanze di MvcRouteHandler. L'interfaccia IRouteHandler viene implementata tramite MvcRouteHandler.

Pertanto, l'oggetto di MvcRouteHandler viene utilizzato per ottenere un riferimento per l'oggetto di MvcRouteHandler che è HTTPHandler dell'applicazione.

La creazione del MvcRouteHandler, richiede la chiamata del metodo PostResolveRequestCache(). Questo metodo PostResolveRequestCache() può essere definito nel modo seguente:

Fonte

Pertanto, gli eventi seguenti si verificano nel metodo PostResolveRequestCache().

  • Un metodo GetRouteData() è presente nella proprietà RouteCollection. Il metodo viene chiamato e passato tramite HttpContext.
  • L'oggetto RouteData viene restituito tramite il metodo di GetRouteData().
  • una proprietà RouteHandler è contenuta da routeData che restituisce il gestore IRouteHandler per la richiesta, che è corrente, ovvero MvcRouteHandler.
  • Il metodo G etHttpHandler() è associato a MvcRouteHandler che restituisce un riferimento per MvcHandler.
  • I controlli vengono quindi delegati all'istanza di MvcHandler.

MvcHandler

MvcHandler è un normale gestore di HTTP. Essendo un gestore dell'HTTP, viene eseguita l'implementazione del metodo ProcessRequest(). Questo metodo ProcessRequest() può essere definito come:

Fonte

Il metodo ProcessRequest() viene utilizzato per chiamare il metodo ProcessRequestInit() come definito nell'immagine seguente:

Fonte
Gli eventi seguenti si verificano nel metodo ProcessRequest().

  • Il ControllerFactory viene creato tramite la chiamata del metodo ProcessRequestInit().
  • ControllerFactory crea il Controller.
  • Viene chiamato il metodo Execute() del Controller.

ControllerFactory

Si può osservare che ControllerFactory si ottiene tramite il metodo ProcessRequest(). ControllerFactory viene quindi utilizzato per creare l'oggetto dell'oggetto Controller. L'interfaccia IControllerFactory è implementata dalla Controller factory.

PER DEFAULT, il framework MVC crea il tipo DefaultControllerFactory quando viene utilizzato ControllerBuilder per creare ControllerFactory.

La riga di codice seguente crea ControllerFactory nel metodo ProcessRequestInit().

Fonte

Controllore

È stato osservato che l'oggetto Controller viene creato in ControllerFactory nel metodo ProcessRequest() di MvcHandler. Il Controller creato contiene i metodi per le azioni che devono essere intraprese dal framework. Ogni volta che viene effettuata una richiesta di URL nel browser, c'è una chiamata del metodo per le azioni. I controller sono creati in modo che non vi sia un'implementazione esplicita dell'interfaccia di IControlle. La classe Controller viene utilizzata per creare i controller che forniscono diverse funzionalità. La classe di Controller può ereditare un'altra classe di Controller che prende il nome di “ControllerBase” come definito nel codice riportato di seguito:

Fonte

ActionInvoker viene utilizzato per chiamare i metodi delle azioni nel Controller.

I seguenti eventi si verificano dopo la creazione del Controller attraverso la fabbrica del controller:

  • Chiamando il metodo Execute() di controllerbase.
  • Il metodo ExecuteCore() viene chiamato dal metodo Execute() che viene dichiarato astratto e viene quindi definito tramite la classe Controller.
  • Il nome dell'azione viene recuperato da RouteData tramite il metodo ExecuteCore() dalla classe Controller.
  • Il metodo InvokeAction() di ActionInvoker viene chiamato dal metodo ExecuteCore().

ActionInvoker

Viene utilizzato per la selezione delle azioni.

La classe ActionInvoker ha alcune importanti responsabilità che includono la ricerca di un metodo di azione e quindi il richiamo del metodo di azione nel Controller.

Gli eventi che si verificano quando viene chiamato il metodo InvokeAction() di ActionInvoker sono:

  • Le informazioni relative al Controller devono essere ottenute da ActionInvoker e l'azione che è necessaria per eseguire.
  • L'oggetto descrittore fornisce queste informazioni.
  • Il nome del controller e il nome dell'azione sono forniti dalla classe descrittore dell'azione e dal Controller.
  • C'è l'invocazione di ActionMethod .

Risultato dell'azione

ActionResult è un tipo della classe astratta. Essendo un metodo astratto, esistono diverse implementazioni per il metodo ExecuteResult() fornite dalle diverse sottoclassi.

Gli eventi seguenti si verificano in ActionResult

  • C'è un'invocazione dei metodi di OnActionExecuting degli ActionFilters.
  • Richiamo dell'azione del metodo.
  • Richiamo dei metodi OnActionExecuted metodi di ActionFilters.
  • C'è un ritorno di ActionResult da ActionMethod
  • Chiamando il metodo ExecuteResult() di ActionResult.

ViewEngine

La maggior parte delle applicazioni utilizza ViewResult come tipo restituito. Viene eseguito il rendering di una vista tramite ViewEngine al client. Da questo punto di vista, è possibile generare l'HTML. L'HTML viene generato dalla vista tramite ViewEngine.

Conclusioni

Comprendere il ruolo di ogni componente nell'applicazione è un passaggio cruciale. In questo modo si possono comprendere le connessioni tra i componenti e il loro modo di lavorare. Se vuoi essere uno sviluppatore esperto, padroneggiare le tue abilità è un modo. Puoi dare un'occhiata ai corsi di ingegneria del software online di upGrad che ti daranno la certificazione e la formazione di esperti nell'area dello sviluppo di applicazioni e software. Il corso è progettato per professionisti sia uomini che donne ed è certificato da IIIT-B e otterrai il loro status di Alumni.

Puoi spiegare il ciclo di vita della pagina di MVC?

Quando viene applicato MVC, l'applicazione è suddivisa in tre livelli: livello dati o modello, interfaccia utente o visualizzazione e controller. Ogni strato di MVC ha una funzione diversa. Innanzitutto, l'interfaccia utente o il livello di visualizzazione è l'interfaccia utente. È l'interfaccia principale tra gli utenti e l'applicazione. È responsabile della ricezione dell'input dell'utente e della presentazione dei risultati. Quindi il controller è connesso a tutti i componenti nel livello di visualizzazione ed elabora l'input dell'utente, invia i dati al livello del modello e invia il risultato all'utente. Il livello del modello è il luogo in cui vengono archiviati i dati. È responsabile del controllo dei dati. Inoltre, un livello del modello è anche responsabile della lettura e della scrittura dei dati nella memoria.

Come possiamo mantenere le sessioni in MVC?

Il framework ASP.NET MVC utilizza la potenza dello stato della sessione ASP.NET. Lo stato della sessione è un servizio Web integrato nella piattaforma ASP.NET. È responsabile del mantenimento di tutti gli oggetti, dati e altre informazioni associate a una determinata sessione. L'oggetto SessionState mantiene i valori dello stato della sessione. È anche responsabile del popolamento e del mantenimento dei valori dell'oggetto Session. L'oggetto Session funge da gateway per lo stato della sessione. È una proprietà dell'oggetto SessionState ed è ciò che viene utilizzato per archiviare e recuperare i valori per lo stato della sessione.

Quanti tipi di filtri ci sono in MVC?

I filtri in MVC sono quelli che si trovano tra il controller e il modello e possono essere utilizzati per convalidare l'input dell'utente o modificare l'output del modello. Di seguito sono riportati alcuni dei filtri in MVC. 1. Filtri di convalida: i filtri di convalida aiutano a convalidare l'input dell'utente. 2. Filtri di azione - I filtri di azione aiutano a modificare gli output del modello. 3. Filtri del modello: i filtri del modello aiutano a modificare gli output del modello. 4. Filtri di output - I filtri di output vengono utilizzati per modificare l'output del modello.