Ciclo de vida da página MVC explicado em linguagem simples

Publicados: 2021-11-26

Este artigo se concentrará no ciclo de vida do aplicativo MVC e como o aplicativo processa uma solicitação por meio de sua passagem pelos componentes do aplicativo. Dois ciclos de vida estão presentes em um ciclo de vida MVC . Esses dois ciclos de vida são:

  • O ciclo de vida do aplicativo
  • O ciclo de vida da solicitação.

Índice

Ciclo de vida do aplicativo

Ciclo de vida do aplicativo geralmente significa o momento em que o processo do aplicativo começa a ser executado. Para denotar o ciclo de vida do aplicativo MVC , o início e o fim do aplicativo são marcados.

O ciclo de vida do pedido

O ciclo de vida da solicitação significa a série de eventos que acontecem sempre que o aplicativo trata uma solicitação HTTP. O roteamento é o ponto de entrada para iniciar qualquer aplicação do MVC. Quando uma solicitação é feita à plataforma ASP.NET, é tomada a decisão de como lidar com a solicitação por meio do módulo de roteamento. O termo módulo significa componentes do .NET, que são usados ​​para adicionar funcionalidade ao código. É de responsabilidade dos módulos de roteamento corresponder a URL que está entrando nas respectivas rotas definidas na aplicação. Um manipulador de rota é associado a cada rota, que marca o ponto de entrada na estrutura do MVC.

O framework do MVC é responsável por tratar da conversão dos dados da rota em controladores que irão tratar ainda mais as requisições. Feita a criação do Controller, o próximo passo é agir. Isso é feito através do componente de invocador de ação, que seleciona um método de ação para invocar o Controlador.

Feita a preparação para o resultado da ação, o próximo passo é a execução do resultado. Uma etapa de separação é criada para o resultado da execução do resultado. Para um resultado de tipo de exibição, o aplicativo chamará o mecanismo de exibição e localizará e ajudará na renderização da exibição. Se o resultado não for uma visualização, a execução da ação ocorrerá por conta própria. É a execução do resultado que gera a resposta real para a solicitação HTTP original.

A maioria dos componentes são conhecidos pelos desenvolvedores que são usados ​​para processar a solicitação. Na maioria dos casos, os métodos e controladores relacionados às ações estão sendo trabalhados. Além disso, diferentes resultados de ação e visões estão sendo trabalhados. Mas existem outros componentes também dentro da estrutura do MVC. Pode haver muitas perguntas na mente sobre como o fluxo de solicitações é realizado por meio dos diferentes componentes ou da função do módulo HTTP e do manipulador durante o processamento da solicitação. Sendo o framework MVC um framework de desenvolvimento web, deve haver módulos do HHTP e os handlers HTTP no pipeline MVC do framework.

Muitos componentes estão presentes no ciclo de vida da página MVC , além do Controller e dos métodos de ação.

UrlRoutingModule

Este é um tipo de módulo HTTP. Sempre que uma solicitação é feita pela primeira vez, ela é interceptada por meio do UrlRoutingModule. Neste módulo, está sendo decidido se o aplicativo MVC deve lidar com a solicitação. O UrlRoutingModule seleciona a primeira rota que corresponde.

Como a solicitação é correspondida com essas rotas presentes no aplicativo MVC por meio do UrlRoutingModule?

Observando o método de RegisterRoutes, que é chamado de global.asax, as rotas adicionadas ao RouteCollection das rotas podem ser vistas. A chamada do método é feita a partir do manipulador de eventos no application_start de global.asax.

Fonte

Como são definidas as rotas no RouteHandler?

As rotas são definidas como métodos de extensão, como pode ser visto no método do maproute. O manipulador de rotas está associado a todas as rotas.

O método do UrlRoutingModule é definido da seguinte maneira.

Fonte

Através da explicação acima, pode-se saber que o UrlRoutingModule conhece todas as rotas que estão definidas na aplicação. Portanto, a rota correta pode ser combinada com a solicitação no aplicativo.

Um ponto importante a ser observado é que o módulo UrlRoutingModule está envolvido na seleção da primeira rota correspondente. Assim, sempre que a correspondência for detectada, o processo de verificação será interrompido. Se resumirmos o que acontece neste estágio, o manipulador de rotas é anexado às rotas por meio do U RLRoutingModule.

RouteHandler

Através do método do maproute, as rotas são anexadas às instâncias do MvcRouteHandler. A interface IRouteHandler é implementada através do MvcRouteHandler.

Portanto, o objeto do MvcRouteHandler é utilizado para obter uma referência para a coisa do MvcRouteHandler que é o HTTPHandler da aplicação.

A criação do MvcRouteHandler, exige a chamada do método PostResolveRequestCache(). Este método PostResolveRequestCache() pode ser definido da seguinte forma:

Fonte

Portanto, os seguintes eventos ocorrem no método PostResolveRequestCache().

  • Um método GetRouteData() está presente na propriedade RouteCollection. O método é chamado e passado pelo HttpContext.
  • O objeto RouteData é retornado através do método GetRouteData().
  • uma propriedade RouteHandler está contida no routeData que retorna o manipulador IRouteHandler para a solicitação, que é atual, ou seja, o MvcRouteHandler.
  • O método G etHttpHandler() está associado ao MvcRouteHandler que retorna uma referência para o MvcHandler.
  • Os controles são então delegados à instância de MvcHandler.

MvcHandlerGenericName

O MvcHandler é um manipulador normal do HTTP. Por ser um handler do HTTP, é realizada a implementação do método ProcessRequest(). Este método ProcessRequest() pode ser definido como:

Fonte

O método ProcessRequest() é usado para chamar o método ProcessRequestInit() conforme definido na imagem abaixo:

Fonte
Os eventos a seguir ocorrem no método ProcessRequest().

  • A ControllerFactory é criada através da chamada do método ProcessRequestInit().
  • O ControllerFactory cria o Controller.
  • O método Execute() do Controller é chamado.

Fábrica do Controlador

Pode-se observar que a ControllerFactory é obtida através do método ProcessRequest(). O ControllerFactory é então usado para criar o objeto do objeto Controller. A interface IControllerFactory é implementada pela fábrica Controller.

POR DEFAULT, o framework MVC cria o tipo DefaultControllerFactory quando o ControllerBuilder é usado para criar o ControllerFactory.

A linha de código a seguir cria o ControllerFactory no método ProcessRequestInit().

Fonte

Controlador

Foi observado que o objeto Controller é criado na ControllerFactory no método ProcessRequest() do MvcHandler. O Controller criado contém os métodos para as ações que devem ser tomadas pelo framework. Sempre que uma solicitação de URL é feita no navegador, há uma chamada do método para as ações. Os controladores são criados para que não haja implementação explícita da interface do IControlle. A classe Controller é usada para criar os controllers que fornecem diversos recursos. A classe de Controller pode herdar outra classe de Controller que é chamada de “ControllerBase” conforme definido no código mostrado abaixo:

Fonte

O ActionInvoker é usado para chamar os métodos das ações no Controller.

Os seguintes eventos ocorrem após a criação do Controlador através da fábrica do controlador:

  • Chamando o método Execute() do controllerbase.
  • O método ExecuteCore() é chamado pelo método Execute() que é declarado como abstrato e então definido através da classe Controller.
  • O nome da ação é recuperado do RouteData através do método ExecuteCore() pela classe Controller.
  • O método ActionInvoker's InvokeAction() é chamado pelo método ExecuteCore().

ActionInvoker

É usado para a seleção de ações.

A classe ActionInvoker tem algumas responsabilidades importantes que incluem encontrar um método de ação e então invocar o método de ação no Controlador.

Os eventos que ocorrem quando o método ActionInvoker's InvokeAction() é chamado são:

  • As informações sobre o Controlador devem ser obtidas pelo ActionInvoker e a ação que é necessária para executar.
  • O objeto descritor fornece esta informação.
  • O nome do controlador e o nome da ação são fornecidos pela classe do descritor da ação e do Controlador.
  • Não está invocando o ActionMethod .

Resultado da ação

O ActionResult é um tipo da classe abstrata. Sendo um método abstrato, existem diferentes implementações para o método ExecuteResult() fornecidas pelas diferentes subclasses.

Os seguintes eventos ocorrem no ActionResult

  • Há uma invocação dos métodos de OnActionExecuting dos ActionFilters.
  • Invocando a ação do método.
  • Invocação dos métodos OnActionExecuted métodos de ActionFilters.
  • Há um retorno do ActionResult do ActionMethod
  • Chamando o método ExecuteResult() do ActionResult.

ViewEngine

A maioria dos aplicativos usa ViewResult como seu tipo de retorno. Uma visualização é renderizada por meio do ViewEngine para o cliente. A partir desta visualização, o HTML pode ser gerado. O HTML é gerado a partir da visualização por meio do ViewEngine.

Conclusões

Compreender a função de cada componente no aplicativo é uma etapa crucial. Dessa forma, as conexões entre os componentes e sua forma de funcionamento podem ser compreendidas. Se você quer ser um desenvolvedor experiente, dominar suas habilidades é um caminho. Você pode conferir os Cursos Online de Engenharia de Software do upGrad que lhe darão certificação e treinamento especializado na área de desenvolvimento de aplicativos e software. O curso é projetado para profissionais do sexo masculino e feminino e é certificado pelo IIIT-B, e você obterá seu status de ex-aluno.

Você pode explicar o ciclo de vida da página do MVC?

Quando o MVC é aplicado, a aplicação é dividida em três camadas: camada de dados ou modelo, interface do usuário ou visualização e controlador. Cada camada do MVC tem uma função diferente. Primeiro, a camada UI ou View é a interface do usuário. É a principal interface entre os usuários e o aplicativo. É responsável por receber a entrada do usuário e apresentar os resultados. Em seguida, o controlador é conectado a todos os componentes na camada de visualização e processa a entrada do usuário, envia dados para a camada de modelo e envia o resultado de volta ao usuário. A camada de modelo é onde os dados são armazenados. É responsável pelo controle dos dados. Além disso, uma camada de modelo também é responsável por ler e gravar dados no armazenamento.

Como podemos manter as sessões no MVC?

A estrutura ASP.NET MVC utiliza o poder do Estado de Sessão ASP.NET. O estado de sessão é um serviço Web integrado à plataforma ASP.NET. Ele é responsável por manter todos os objetos, dados e outras informações associadas a uma determinada sessão. O objeto SessionState mantém os valores do estado da sessão. Também é responsável por preencher e manter os valores do objeto Session. O objeto Session atua como o gateway para o estado da sessão. É uma propriedade do objeto SessionState e é o que é usado para armazenar e recuperar os valores para o estado da sessão.

Quantos tipos de filtros existem no MVC?

Os filtros no MVC são aqueles que ficam entre o controlador e o modelo e podem ser usados ​​para validar a entrada do usuário ou modificar a saída do modelo. A seguir estão alguns dos filtros no MVC. 1. Filtros de validação - Os filtros de validação ajudam a validar a entrada do usuário. 2. Filtros de ação - Os filtros de ação ajudam a modificar as saídas do modelo. 3. Filtros de modelo - Os filtros de modelo ajudam a modificar as saídas do modelo. 4. Filtros de saída - Os filtros de saída são usados ​​para modificar a saída do modelo.