Ciclul de viață al paginii MVC explicat într-un limbaj simplu

Publicat: 2021-11-26

Acest articol se va concentra asupra ciclului de viață al aplicației MVC și asupra modului în care aplicația procesează o solicitare prin trecerea acesteia prin componentele aplicației. Două cicluri de viață sunt prezente într-un ciclu de viață MVC . Aceste două cicluri de viață sunt:

  • Ciclul de viață al aplicației
  • Ciclul de viață al cererii.

Cuprins

Ciclul de viață al aplicației

Ciclul de viață al aplicației înseamnă, în general, momentul în care procesul aplicației începe să ruleze. Pentru a indica ciclul de viață al aplicației MVC , începutul și sfârșitul aplicației sunt marcate.

Ciclul de viață al cererii

Ciclul de viață al cererii înseamnă seria de evenimente care au loc ori de câte ori aplicația gestionează o solicitare HTTP. Rutarea este punctul de intrare pentru începerea oricărei aplicații a MVC. Când se face o solicitare către platforma ASP.NET, se ia decizia cu privire la modul de gestionare a cererii prin modulul de rutare. Termenul modul înseamnă componente ale .NET, care sunt utilizate pentru adăugarea de funcționalități în cod. Este responsabilitatea modulelor de rutare să se potrivească cu adresa URL care primește rutele respective definite în aplicație. Un handler de rută este asociat cu fiecare rută, care marchează punctul de intrare în cadrul MVC.

Cadrul MVC este responsabil pentru gestionarea conversiei datelor rutei în controlori care vor gestiona în continuare solicitările. Odată ce crearea Controllerului este finalizată, următorul pas este acțiunea. Acest lucru se realizează prin componenta action invoker, care selectează o metodă de acțiune pentru a invoca Controller-ul.

Odată ce pregătirea pentru rezultatul acțiunii este făcută, următorul pas este execuția rezultatului. Se creează un pas de separare pentru rezultatul execuției rezultatului. Pentru un rezultat de tip de vizualizare, aplicația va apela motorul de vizualizare și va găsi și va ajuta la redarea vizualizării. Dacă rezultatul nu este o vedere, execuția acțiunii va avea loc pe cont propriu. Execuția rezultată este cea care generează răspunsul real la cererea HTTP originală.

Majoritatea componentelor sunt cunoscute de dezvoltatori că sunt folosite pentru a procesa cererea. În cele mai multe cazuri, se lucrează la metodele și controlorii aferente acțiunilor. De asemenea, se lucrează la diferite rezultate ale acțiunilor și puncte de vedere. Dar există și alte componente în cadrul MVC. S-ar putea să existe multe întrebări în mintea cuiva despre modul în care fluxul de solicitări este realizat prin diferitele componente sau rolul modulului HTTP și handler-ul în timpul procesării cererii. Cadrul MVC fiind un cadru de dezvoltare web, trebuie să existe module ale HHTP și handlerele HTTP în conducta MVC a cadrului.

Multe componente sunt prezente în ciclul de viață al paginii MVC , în afară de Controller și metodele de acțiune.

UrlRoutingModule

Acesta este un tip de modul HTTP. Ori de câte ori o solicitare este făcută pentru prima dată, aceasta este interceptată prin UrlRoutingModule. În acest modul, se decide dacă aplicația MVC ar trebui să gestioneze cererea. UrlRoutingModule selectează primul traseu care se potrivește.

Cum se potrivește cererea cu acele rute prezente în aplicația MVC prin UrlRoutingModule?

Privind metoda RegisterRoutes, care este numită din global.asax, au putut fi văzute rutele adăugate la RouteCollection a rutelor. Apelarea metodei se face din handlerul de evenimente la application_start al global.asax.

Sursă

Cum sunt definite rutele din RouteHandler?

Rutele sunt definite ca metode de extindere, așa cum se poate observa în metoda maproute. Managerul de rută este asociat cu toate rutele.

Metoda UrlRoutingModule este definită în felul următor.

Sursă

Prin explicația de mai sus, se poate ști că UrlRoutingModule cunoaște toate rutele care sunt definite în aplicație. Prin urmare, ruta corectă poate fi corelată cu solicitarea din aplicație.

Un punct important de remarcat este faptul că modulul UrlRoutingModule este implicat în selectarea primei rute potrivite. Deci, ori de câte ori potrivirea a fost detectată, procesul de scanare se oprește. Dacă rezumăm ceea ce se întâmplă în această etapă, handlerul de rută este atașat rutelor prin U RLRoutingModule.

RouteHandler

Prin metoda maproute, rutele se atașează la instanțele MvcRouteHandler. Interfața IRouteHandler este implementată prin MvcRouteHandler.

Prin urmare, obiectul MvcRouteHandler este folosit pentru a obține o referință pentru lucrul MvcRouteHandler care este HTTPHandler-ul aplicației.

Crearea MvcRouteHandler, necesită apelarea metodei PostResolveRequestCache(). Această metodă PostResolveRequestCache() poate fi definită în felul următor:

Sursă

Prin urmare, următoarele evenimente au loc la metoda PostResolveRequestCache().

  • O metodă GetRouteData() este prezentă în proprietatea RouteCollection. Metoda este apelată și transmisă prin HttpContext.
  • Obiectul RouteData este returnat prin metoda GetRouteData().
  • o proprietate RouteHandler este conținută de routeData care returnează handlerul IRouteHandler pentru cerere, care este curent, adică MvcRouteHandler.
  • Metoda G etHttpHandler() este asociată cu MvcRouteHandler care returnează o referință pentru MvcHandler.
  • Controalele sunt apoi delegate instanței MvcHandler.

MvcHandler

MvcHandler este un handler normal al HTTP. Deoarece este un handler al HTTP, se realizează implementarea metodei ProcessRequest(). Această metodă ProcessRequest() poate fi definită ca:

Sursă

Metoda ProcessRequest() este folosită pentru apelarea metodei ProcessRequestInit() așa cum este definită în imaginea de mai jos:

Sursă
Următoarele evenimente au loc la metoda ProcessRequest().

  • ControllerFactory este creat prin apelarea metodei ProcessRequestInit().
  • ControllerFactory creează controlerul.
  • Este apelată metoda Execute() a Controllerului.

ControllerFactory

Se poate observa că ControllerFactory este obținută prin metoda ProcessRequest(). ControllerFactory este apoi folosit pentru a crea obiectul obiectului Controller. Interfața IControllerFactory este implementată de fabrica Controller.

IMPLICIT, cadrul MVC creează tipul DefaultControllerFactory atunci când ControllerBuilder este utilizat pentru crearea ControllerFactory.

Următoarea linie de cod creează ControllerFactory în metoda ProcessRequestInit().

Sursă

Controlor

S-a observat că obiectul Controller este creat în ControllerFactory în metoda ProcessRequest() a MvcHandler. Controller-ul creat conține metodele pentru acțiunile care urmează să fie întreprinse de cadru. Ori de câte ori se face o solicitare de URL în browser, există o apelare a metodei pentru acțiuni. Controlerele sunt create astfel încât să nu existe o implementare explicită a interfeței IControlle. Clasa Controller este folosită pentru a crea controlere care oferă mai multe caracteristici. Clasa de Controller poate moșteni o altă clasă de Controller care se numește „ControllerBase”, așa cum este definit în codul prezentat mai jos:

Sursă

ActionInvoker este folosit pentru a apela metodele acțiunilor din Controller.

Următoarele evenimente apar după crearea controlerului prin fabrica de controlere:

  • Apelarea metodei Execute() a controllerbase.
  • Metoda ExecuteCore() este apelată de metoda Execute() care este declarată abstractă și apoi este definită prin clasa Controller.
  • Numele acțiunii este preluat din RouteData prin metoda ExecuteCore() de către clasa Controller.
  • Metoda ActionInvoker's InvokeAction() este apelată de metoda ExecuteCore().

ActionInvoker

Este folosit pentru selectarea acțiunilor.

Clasa ActionInvoker are unele responsabilități importante care includ găsirea unei metode de acțiune și apoi invocarea metodei de acțiune în Controller.

Evenimentele care apar atunci când metoda ActionInvoker este apelată InvokeAction() sunt:

  • Informațiile referitoare la Controller trebuie să fie obținute de ActionInvoker și acțiunea care trebuie efectuată.
  • Obiectul descriptor oferă aceste informații.
  • Numele controlerului și numele acțiunii sunt furnizate de clasa de descriptor a acțiunii și a controlorului.
  • Există invocarea ActionMethod.

ActionResult

ActionResult este un tip al clasei abstracte. Fiind o metodă abstractă, există diferite implementări pentru metoda ExecuteResult() oferită de diferitele subclase.

Următoarele evenimente au loc în ActionResult

  • Există o invocare a metodelor de OnActionExecuting a ActionFilters.
  • Invocarea acțiunii metodei.
  • Invocarea metodelor OnActionExecuted metode ale ActionFilters.
  • Există o întoarcere a ActionResult din ActionMethod
  • Apelarea metodei ExecuteResult() din ActionResult.

ViewEngine

Majoritatea aplicațiilor folosesc ViewResult ca tip de returnare. O vizualizare este redată clientului prin ViewEngine. Din această vedere, HTML-ul poate fi generat. HTML-ul este generat din vizualizare prin ViewEngine.

Concluzii

Înțelegerea rolului fiecărei componente din aplicație este un pas crucial. În acest fel, pot fi înțelese conexiunile dintre componente și modul lor de funcționare. Dacă vrei să fii un dezvoltator cu experiență, atunci stăpânirea abilităților tale este o modalitate. Puteți consulta Cursurile de inginerie software online ale upGrad , care vă vor oferi certificare și formare de experți în domeniul dezvoltării de aplicații și software. Cursul este conceput atât pentru bărbați, cât și pentru femei profesioniști și este certificat de IIIT-B și veți obține statutul lor de absolvent.

Puteți explica ciclul de viață al paginii MVC?

Când se aplică MVC, aplicația este împărțită în trei straturi: Strat de date sau Model, UI sau Vizualizare și Controler. Fiecare strat de MVC are o funcție diferită. În primul rând, UI sau stratul View este interfața cu utilizatorul. Este interfața principală între utilizatori și aplicație. Este responsabil pentru primirea intrărilor utilizatorului și prezentarea rezultatelor. Apoi controlerul este conectat la toate componentele din stratul de vizualizare și procesează intrarea utilizatorului, trimite date la stratul de model și trimite rezultatul înapoi utilizatorului. Stratul model este locul în care sunt stocate datele. Este responsabil pentru controlul datelor. În plus, un strat de model este, de asemenea, responsabil pentru citirea și scrierea datelor în stocare.

Cum putem menține sesiunile în MVC?

Cadrul ASP.NET MVC utilizează puterea stării de sesiune ASP.NET. Starea sesiunii este un serviciu web care este încorporat în platforma ASP.NET. Este responsabil pentru menținerea tuturor obiectelor, datelor și altor informații care sunt asociate cu o anumită sesiune. Obiectul SessionState menține valorile stării sesiunii. De asemenea, este responsabil pentru popularea și menținerea valorilor obiectului Session. Obiectul Session acționează ca gateway către starea sesiunii. Este o proprietate a obiectului SessionState și este ceea ce este folosit pentru a stoca și a prelua valorile pentru starea sesiunii.

Câte tipuri de filtre există în MVC?

Filtrele din MVC sunt cele care stau între controler și model și pot fi folosite pentru a valida intrarea utilizatorului sau pentru a modifica ieșirea modelului. Următoarele sunt câteva dintre filtrele din MVC. 1. Filtre de validare - Filtrele de validare ajută la validarea datelor introduse de utilizator. 2. Filtre de acțiune - Filtrele de acțiune ajută la modificarea ieșirilor modelului. 3. Filtre de model - Filtrele de model ajută la modificarea ieșirilor modelului. 4. Filtre de ieșire - Filtrele de ieșire sunt folosite pentru a modifica ieșirea modelului.