Ciclo de vida da página MVC explicado em linguagem simples
Publicados: 2021-11-26Este 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.
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. 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. 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.Você pode explicar o ciclo de vida da página do MVC?
Como podemos manter as sessões no MVC?
Quantos tipos de filtros existem no MVC?