Partilhar via


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.