Cykl życia strony MVC wyjaśniony prostym językiem

Opublikowany: 2021-11-26

W tym artykule skupimy się na cyklu życia aplikacji MVC i sposobie, w jaki aplikacja przetwarza żądanie poprzez jego przekazywanie przez składniki aplikacji. W cyklu życia MVC występują dwa cykle życia . Te dwa cykle życia to:

  • Cykl życia aplikacji
  • Cykl życia żądania.

Spis treści

Cykl życia aplikacji

Cykl życia aplikacji ogólnie oznacza czas, w którym zaczyna działać proces aplikacji. Aby oznaczyć cykl życia aplikacji MVC , początek i koniec aplikacji są zaznaczone.

Cykl życia żądania

Cykl życia żądania oznacza serię zdarzeń, które mają miejsce za każdym razem, gdy aplikacja obsługuje żądanie HTTP. Routing jest punktem wejścia do rozpoczęcia dowolnej aplikacji MVC. Po przesłaniu żądania do platformy ASP.NET podejmowana jest decyzja, jak obsłużyć żądanie za pośrednictwem modułu routingu. Termin moduł oznacza komponenty .NET, które służą do dodawania funkcjonalności do kodu. Za dopasowanie adresu URL przychodzącego do odpowiednich tras zdefiniowanych w aplikacji odpowiadają moduły routingu. Z każdą trasą powiązany jest program obsługi tras, który oznacza punkt wejścia do struktury MVC.

Framework MVC odpowiada za obsługę konwersji danych tras na kontrolery, które będą dalej obsługiwać żądania. Po zakończeniu tworzenia Kontrolera kolejnym krokiem jest podjęcie działań. Odbywa się to poprzez składnik wywołania akcji, który wybiera metodę akcji do wywołania kontrolera.

Po zakończeniu przygotowań do wyniku akcji, kolejnym krokiem jest wykonanie wyniku. Dla wyniku wykonania wyniku tworzony jest krok separacji. W przypadku wyniku typu widoku aplikacja wywoła silnik widoku, który znajdzie i pomoże w renderowaniu widoku. Jeśli wynikiem nie jest widok, wykonanie akcji nastąpi samoistnie. To wykonanie wyniku generuje rzeczywistą odpowiedź na pierwotne żądanie HTTP.

Większość komponentów jest znana programistom, że są używane do przetwarzania żądania. W większości przypadków trwają prace nad metodami i kontrolerami związanymi z akcjami. Opracowywane są również różne wyniki działań i poglądy. Ale w ramach MVC są też inne komponenty. Może pojawić się wiele pytań o to, w jaki sposób przepływ żądań jest wykonywany przez różne komponenty lub rolę modułu HTTP i procedurę obsługi podczas przetwarzania żądania. Framework MVC, będący frameworkiem do tworzenia stron internetowych, musi zawierać moduły HHTP i obsługi HTTP w potoku MVC frameworka.

Wiele składników jest obecnych w cyklu życia strony MVC , oprócz kontrolera i metod akcji.

Moduł routingu URL

To jest rodzaj modułu HTTP. Za każdym razem, gdy żądanie jest wysyłane po raz pierwszy, jest przechwytywane przez UrlRoutingModule. W tym module podejmuje się decyzję, czy aplikacja MVC ma obsłużyć żądanie. UrlRoutingModule wybiera pierwszą pasującą trasę.

W jaki sposób żądanie jest dopasowywane do tych tras obecnych w aplikacji MVC za pośrednictwem UrlRoutingModule?

Patrząc na metodę RegisterRoutes, która jest wywoływana z global.asax, można zobaczyć trasy dodane do RouteCollection tras. Wywołanie metody odbywa się z programu obsługi zdarzeń na początku application_start global.asax.

Źródło

Jak są zdefiniowane trasy w RouteHandler?

Trasy są zdefiniowane jako metody rozszerzające, co można zobaczyć w metodzie maproute. Program obsługi tras jest powiązany ze wszystkimi trasami.

Metoda UrlRoutingModule jest zdefiniowana w następujący sposób.

Źródło

Dzięki powyższemu wyjaśnieniu można stwierdzić, że UrlRoutingModule zna wszystkie trasy, które są zdefiniowane w aplikacji. Dlatego poprawną trasę można dopasować do żądania w aplikacji.

Ważną kwestią, na którą należy zwrócić uwagę, jest to, że moduł UrlRoutingModule bierze udział w wyborze pierwszej pasującej trasy. Tak więc za każdym razem, gdy dopasowanie zostanie wykryte, proces skanowania zatrzymuje się. Jeśli podsumujemy to, co dzieje się na tym etapie, procedura obsługi tras jest dołączona do tras przez moduł U RLRoutingModule.

Trasa Handler

Za pomocą metody maproute trasy są dołączane do wystąpień MvcRouteHandler. Interfejs IRouteHandler jest implementowany przez MvcRouteHandler.

W związku z tym obiekt MvcRouteHandler jest używany do uzyskiwania odwołania do elementu MvcRouteHandler, który jest HTTPHandlerem aplikacji.

Utworzenie MvcRouteHandler wymaga wywołania metody PostResolveRequestCache(). Metodę PostResolveRequestCache() można zdefiniować w następujący sposób:

Źródło

W związku z tym w metodzie PostResolveRequestCache() występują następujące zdarzenia.

  • Metoda GetRouteData() jest obecna we właściwości RouteCollection. Metoda jest wywoływana i przekazywana przez HttpContext.
  • Obiekt RouteData jest zwracany za pomocą metody GetRouteData().
  • właściwość RouteHandler jest zawarta w routeData, która zwraca procedurę obsługi IRouteHandler dla żądania, która jest aktualna, tj. MvcRouteHandler.
  • Metoda G etHttpHandler() jest powiązana z MvcRouteHandler, który zwraca odwołanie do MvcHandler.
  • Kontrolki są następnie delegowane do wystąpienia MvcHandler.

MvcHandler

MvcHandler to normalny program obsługi HTTP. Ponieważ jest to handler HTTP, realizowana jest implementacja metody ProcessRequest(). Metodę ProcessRequest() można zdefiniować jako:

Źródło

Metoda ProcessRequest() służy do wywoływania metody ProcessRequestInit() zgodnie z definicją na poniższym obrazku:

Źródło
Następujące zdarzenia występują w metodzie ProcessRequest().

  • ControllerFactory jest tworzony poprzez wywołanie metody ProcessRequestInit().
  • ControllerFactory tworzy kontroler.
  • Wywoływana jest metoda Execute() kontrolera.

Fabryka kontrolerów

Można zauważyć, że ControllerFactory uzyskuje się za pomocą metody ProcessRequest(). ControllerFactory jest następnie używany do tworzenia obiektu obiektu Controller. Interfejs IControllerFactory jest zaimplementowany przez fabrykę kontrolerów.

DOMYŚLNIE struktura MVC tworzy typ DefaultControllerFactory, gdy ControllerBuilder jest używany do tworzenia ControllerFactory.

Poniższy wiersz kodu tworzy ControllerFactory w metodzie ProcessRequestInit().

Źródło

Kontroler

Zaobserwowano, że obiekt Controller jest tworzony w ControllerFactory w metodzie ProcessRequest() programu MvcHandler. Utworzony Kontroler zawiera metody akcji, które ma podjąć framework. Za każdym razem, gdy w przeglądarce pojawia się żądanie adresu URL, następuje wywołanie metody dla akcji. Kontrolery są tworzone w taki sposób, aby nie było jawnej implementacji interfejsu IControlle. Klasa Controller służy do tworzenia kontrolerów , które zapewniają kilka funkcji. Klasa Controller może dziedziczyć inną klasę Controller, która nazywa się „ControllerBase” zgodnie z definicją w kodzie pokazanym poniżej:

Źródło

ActionInvoker służy do wywoływania metod akcji w kontrolerze.

Po utworzeniu Kontrolera przez fabrykę kontrolera występują następujące zdarzenia:

  • Wywołanie metody Execute() kontrolera.
  • Metoda ExecuteCore() jest wywoływana przez metodę Execute(), która jest zadeklarowana jako abstrakcyjna, a następnie zdefiniowana przez klasę Controller.
  • Nazwa akcji jest pobierana z RouteData za pomocą metody ExecuteCore() przez klasę Controller.
  • Metoda ActionInvoker InvokeAction() jest wywoływana przez metodę ExecuteCore().

AkcjaInvoker

Służy do wyboru działań.

Klasa ActionInvoker ma kilka ważnych obowiązków, które obejmują znajdowanie metody akcji, a następnie wywoływanie metody akcji w kontrolerze.

Zdarzenia występujące po wywołaniu metody ActionInvoker InvokeAction() to:

  • Informacje dotyczące Kontrolera musi uzyskać ActionInvoker oraz czynność, która jest potrzebna do wykonania.
  • Te informacje dostarcza obiekt deskryptora.
  • Nazwa kontrolera i nazwa akcji są dostarczane przez klasę deskryptora akcji i kontrolera.
  • Wywołuje ActionMethod .

AkcjaWynik

ActionResult jest typem klasy abstrakcyjnej. Będąc metodą abstrakcyjną, istnieją różne implementacje metody ExecuteResult() dostarczanej przez różne podklasy.

Następujące zdarzenia występują w ActionResult

  • Następuje wywołanie metod OnActionExecuting filtrów ActionFilters.
  • Wywołanie akcji metody.
  • Wywołanie metod OnActionExecuted metod ActionFilters.
  • Następuje zwrot ActionResult z ActionMethod
  • Wywołanie metody ExecuteResult() obiektu ActionResult.

Wyświetl silnik

Większość aplikacji używa ViewResult jako typu zwracanego. Widok jest renderowany przez ViewEngine do klienta. Z tego widoku można wygenerować kod HTML. Kod HTML jest generowany z widoku za pośrednictwem ViewEngine.

Wnioski

Zrozumienie roli każdego komponentu w aplikacji to kluczowy krok. W ten sposób można zrozumieć powiązania między komponentami i ich sposób pracy. Jeśli chcesz być doświadczonym programistą, jednym ze sposobów jest doskonalenie swoich umiejętności. Możesz zapoznać się z internetowymi kursami inżynierii oprogramowania upGrad , które zapewnią Ci certyfikację i szkolenie eksperckie w zakresie tworzenia aplikacji i oprogramowania. Kurs jest przeznaczony dla profesjonalistów pracujących zarówno dla mężczyzn, jak i kobiet i jest certyfikowany z poziomu IIIT-B, a Ty uzyskasz ich status absolwenta.

Czy możesz wyjaśnić cykl życia strony MVC?

Po zastosowaniu MVC aplikacja jest podzielona na trzy warstwy: warstwę danych lub model, interfejs użytkownika lub widok i kontroler. Każda warstwa MVC ma inną funkcję. Po pierwsze, interfejs użytkownika lub warstwa widoku to interfejs użytkownika. Jest to główny interfejs pomiędzy użytkownikami a aplikacją. Jest odpowiedzialny za odbieranie danych wejściowych użytkownika i prezentowanie wyników. Następnie kontroler jest połączony ze wszystkimi komponentami w warstwie widoku i przetwarza dane wprowadzone przez użytkownika, wysyła dane do warstwy modelu i odsyła wynik z powrotem do użytkownika. Warstwa modelu to miejsce przechowywania danych. Odpowiada za kontrolę danych. Dodatkowo warstwa modelu odpowiada również za odczytywanie i zapisywanie danych do pamięci.

Jak możemy utrzymywać sesje w MVC?

Platforma ASP.NET MVC wykorzystuje moc stanu sesji ASP.NET. Stan sesji to usługa sieci Web wbudowana w platformę ASP.NET. Odpowiada za utrzymanie wszystkich obiektów, danych i innych informacji związanych z daną sesją. Obiekt SessionState przechowuje wartości stanu sesji. Odpowiada również za wypełnianie i utrzymywanie wartości obiektu Session. Obiekt Session działa jako brama do stanu sesji. Jest to właściwość obiektu SessionState i służy do przechowywania i pobierania wartości stanu sesji.

Ile typów filtrów jest w MVC?

Filtry w MVC to te, które znajdują się między kontrolerem a modelem i mogą być używane do sprawdzania poprawności danych wejściowych użytkownika lub modyfikowania danych wyjściowych modelu. Oto niektóre z filtrów w MVC. 1. Filtry walidacji — Filtry walidacji pomagają w walidacji danych wprowadzonych przez użytkownika. 2. Filtry akcji — filtry akcji pomagają modyfikować dane wyjściowe modelu. 3. Filtry modelu — filtry modelu pomagają modyfikować dane wyjściowe modelu. 4. Filtry wyjściowe — filtry wyjściowe służą do modyfikowania danych wyjściowych modelu.