Objaśnienie procesu wykonywania we wzorcu ASP.NET MVC

autor: Microsoft

Dowiedz się, jak platforma ASP.NET MVC przetwarza żądanie przeglądarki krok po kroku.

Żądania do aplikacji internetowej opartej na ASP.NET MVC najpierw przechodzą przez obiekt UrlRoutingModule , który jest modułem HTTP. Ten moduł analizuje żądanie i wykonuje wybór trasy. Obiekt UrlRoutingModule wybiera pierwszy obiekt trasy zgodny z bieżącym żądaniem. (Obiekt trasy to klasa, która implementuje bazę danych RouteBase i zazwyczaj jest wystąpieniem klasy Route ). Jeśli żadne trasy nie są zgodne, obiekt UrlRoutingModule nie wykonuje niczego i umożliwia żądaniu powrót do zwykłego przetwarzania żądań ASP.NET lub usług IIS.

Z wybranego obiektu Route obiekt UrlRoutingModule uzyskuje obiekt IRouteHandler skojarzony z obiektem Route . Zazwyczaj w aplikacji MVC będzie to wystąpienie programu MvcRouteHandler. Wystąpienie IRouteHandler tworzy obiekt IHttpHandler i przekazuje go do obiektu IHttpContext . Domyślnie wystąpienie IHttpHandler dla MVC jest obiektem MvcHandler . Obiekt MvcHandler wybiera następnie kontroler, który ostatecznie obsłuży żądanie.

Uwaga

Gdy aplikacja internetowa MVC ASP.NET działa w usługach IIS 7.0, żadne rozszerzenie nazwy pliku nie jest wymagane dla projektów MVC. Jednak w usługach IIS 6.0 program obsługi wymaga mapowania rozszerzenia nazwy pliku mvc na bibliotekę DLL ISAPI ASP.NET.

Moduł i procedura obsługi to punkty wejścia do platformy ASP.NET MVC. Wykonują one następujące czynności:

  • Wybierz odpowiedni kontroler w aplikacji internetowej MVC.
  • Uzyskaj określone wystąpienie kontrolera.
  • Wywołaj metodę Execute kontrolera.

Poniżej wymieniono etapy wykonywania projektu internetowego MVC:

  • Odbieranie pierwszego żądania dla aplikacji

    • W pliku Global.asax obiekty route są dodawane do obiektu RouteTable .
  • Wykonywanie routingu

    • Moduł UrlRoutingModule używa pierwszego pasującego obiektu Route w kolekcji RouteTable do utworzenia obiektu RouteData , który następnie jest używany do utworzenia obiektu RequestContext (IHttpContext).
  • Tworzenie procedury obsługi żądań MVC

    • Obiekt MvcRouteHandler tworzy wystąpienie klasy MvcHandler i przekazuje je do wystąpienia obiektu RequestContext .
  • Tworzenie kontrolera

    • Obiekt MvcHandler używa wystąpienia RequestContext do identyfikowania obiektu IControllerFactory (zazwyczaj wystąpienia klasy DefaultControllerFactory ) w celu utworzenia wystąpienia kontrolera.
  • Wykonaj kontroler — wystąpienie programu MvcHandler wywołuje metodę Execute kontrolera. |

  • Wywołaj akcję

    • Większość kontrolerów dziedziczy z klasy bazowej Kontroler . W przypadku kontrolerów, które to robią, obiekt ControllerActionInvoker skojarzony z kontrolerem określa metodę akcji klasy kontrolera do wywołania, a następnie wywołuje tę metodę.
  • Wynik wykonania

    • Typowa metoda akcji może odbierać dane wejściowe użytkownika, przygotować odpowiednie dane odpowiedzi, a następnie wykonać wynik, zwracając typ wyniku. Wbudowane typy wyników, które można wykonać, obejmują następujące elementy: ViewResult (który renderuje widok i jest najczęściej używanym typem wyników), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult i EmptyResult.