Noções básicas sobre o processo de execução do ASP.NET MVC
pela Microsoft
Saiba como a estrutura do ASP.NET MVC processa uma solicitação de navegador passo a passo.
As solicitações para um aplicativo Web baseado em ASP.NET MVC passam primeiro pelo objeto UrlRoutingModule , que é um módulo HTTP. Este módulo analisa a solicitação e executa a seleção de rota. O objeto UrlRoutingModule seleciona o primeiro objeto de rota que corresponde à solicitação atual. (Um objeto de rota é uma classe que implementa RouteBase e normalmente é uma instância da classe Route .) Se nenhuma correspondência de rotas for correspondente, o objeto UrlRoutingModule não fará nada e permitirá que a solicitação volte ao processamento regular de solicitações ASP.NET ou IIS.
No objeto Route selecionado, o objeto UrlRoutingModule obtém o objeto IRouteHandler associado ao objeto Route . Normalmente, em um aplicativo MVC, essa será uma instância de MvcRouteHandler. A instância IRouteHandler cria um objeto IHttpHandler e passa o objeto IHttpContext . Por padrão, a instância IHttpHandler para MVC é o objeto MvcHandler . Em seguida, o objeto MvcHandler seleciona o controlador que, em última análise, manipulará a solicitação.
Observação
Quando um aplicativo Web ASP.NET MVC é executado no IIS 7.0, nenhuma extensão de nome de arquivo é necessária para projetos MVC. No entanto, no IIS 6.0, o manipulador requer que você mapeie a extensão de nome de arquivo .mvc para o ASP.NET DLL ISAPI.
O módulo e o manipulador são os pontos de entrada para a estrutura ASP.NET MVC. Eles executam as ações a seguir:
- Selecione o controlador apropriado em um aplicativo Web MVC.
- Obtenha uma instância específica do controlador.
- Chame o método Execute do controlador.
O seguinte lista os estágios de execução de um projeto Web do MVC:
Receber a primeira solicitação para o aplicativo
- No arquivo Global.asax, os objetos Route são adicionados ao objeto RouteTable .
Executar roteamento
- O módulo UrlRoutingModule usa o primeiro objeto Route correspondente na coleção RouteTable para criar o objeto RouteData , que ele usa para criar um objeto RequestContext (IHttpContext).
Criar manipulador de solicitação MVC
- O objeto MvcRouteHandler cria uma instância da classe MvcHandler e passa a instância RequestContext .
Criar controlador
- O objeto MvcHandler usa a instância RequestContext para identificar o objeto IControllerFactory (normalmente uma instância da classe DefaultControllerFactory ) para criar a instância do controlador.
Executar controlador – a instância MvcHandler chama o método Execute do controlador. |
Ação Invocar
- A maioria dos controladores herda da classe base Controller . Para controladores que fazem isso, o objeto ControllerActionInvoker associado ao controlador determina qual método de ação da classe de controlador chamar e, em seguida, chama esse método.
Executar resultado
- Um método de ação típico pode receber entrada do usuário, preparar os dados de resposta apropriados e, em seguida, executar o resultado retornando um tipo de resultado. Os tipos de resultados internos que podem ser executados incluem o seguinte: ViewResult (que renderiza uma exibição e é o tipo de resultado mais usado), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult e EmptyResult.