간단한 언어로 설명된 MVC 페이지 수명 주기

게시 됨: 2021-11-26

이 기사에서는 MVC 애플리케이션의 수명 주기와 애플리케이션의 구성 요소를 통과하는 요청을 애플리케이션이 처리하는 방법에 중점을 둘 것입니다. MVC 라이프 사이클에는 두 가지 라이프 사이클이 있습니다 . 이 두 가지 수명 주기는 다음과 같습니다.

  • 애플리케이션 수명 주기
  • 요청 수명 주기.

목차

애플리케이션 수명 주기

애플리케이션 수명 주기는 일반적으로 애플리케이션 프로세스가 실행되기 시작하는 시간을 의미합니다. MVC 애플리케이션 라이프 사이클 을 나타내기 위해 애플리케이션 의 시작과 끝이 표시됩니다.

요청 수명 주기

요청 수명 주기는 애플리케이션이 HTTP 요청을 처리할 때마다 발생하는 일련의 이벤트를 의미합니다. 라우팅은 MVC의 모든 애플리케이션을 시작하기 위한 진입점입니다. ASP.NET 플랫폼에 요청이 발생하면 라우팅 모듈을 통해 요청을 처리하는 방법이 결정됩니다. 모듈이라는 용어는 코드에 기능을 추가하는 데 사용되는 .NET의 구성 요소를 의미합니다. 애플리케이션에 정의된 각 경로로 들어오는 URL을 일치시키는 것은 라우팅 모듈의 책임입니다. 라우트 핸들러는 모든 라우트와 연결되어 MVC 프레임워크에 진입하는 지점을 표시합니다.

MVC의 프레임워크는 요청을 추가로 처리할 컨트롤러로의 경로 데이터 변환을 처리합니다. 컨트롤러 생성이 완료되면 다음 단계는 조치를 취하는 것입니다. 이것은 컨트롤러를 호출할 액션 메서드를 선택하는 액션 호출자의 구성 요소를 통해 수행됩니다.

조치 결과에 대한 준비가 완료되면 다음 단계는 결과 실행입니다. 결과 실행의 결과에 대해 분리 단계가 생성됩니다. 보기 유형 결과의 경우 애플리케이션은 보기 엔진을 호출하고 보기를 찾아 렌더링하는 데 도움을 줍니다. 결과가 보기가 아니면 작업 실행이 자체적으로 수행됩니다. 원래 HTTP 요청에 대한 실제 응답을 생성하는 것은 결과 실행입니다.

대부분의 구성 요소는 요청을 처리하는 데 사용되는 것으로 개발자가 알고 있습니다. 대부분의 경우 작업과 관련된 메서드 및 컨트롤러가 작업 중입니다. 또한, 다양한 행동 결과와 견해를 연구하고 있습니다. 그러나 MVC의 프레임워크 내에는 다른 구성요소도 있습니다. 요청을 처리하는 동안 다른 구성 요소 또는 HTTP 모듈 역할 및 핸들러를 통해 요청의 흐름이 수행되는 방식에 대해 많은 질문이 있을 수 있습니다. MVC 프레임워크는 웹 개발의 프레임워크이므로 프레임워크의 MVC 파이프라인에 HHTP의 모듈과 HTTP 핸들러가 있어야 합니다.

MVC 페이지 수명 주기 에는 컨트롤러 및 작업 메서드를 제외하고 많은 구성 요소가 있습니다.

UrlRoutingModule

이것은 일종의 HTTP 모듈입니다. 요청이 처음 만들어질 때마다 UrlRoutingModule을 통해 가로채어집니다. 이 모듈에서는 MVC 응용 프로그램이 요청을 처리해야 하는지 여부를 결정합니다. UrlRoutingModule은 일치하는 첫 번째 경로를 선택합니다.

UrlRoutingModule을 통해 MVC 애플리케이션에 있는 해당 경로와 요청이 어떻게 일치합니까?

global.asax에서 호출되는 RegisterRoutes의 메소드를 보면 경로의 RouteCollection에 추가된 경로를 볼 수 있습니다. 메서드 호출은 global.asax의 application_start에 있는 이벤트 처리기에서 수행됩니다.

원천

RouteHandler의 경로는 어떻게 정의됩니까?

경로는 maproute의 메서드에서 볼 수 있듯이 확장 메서드로 정의됩니다. 경로 처리기는 모든 경로와 연결됩니다.

UrlRoutingModule의 메소드는 다음과 같이 정의됩니다.

원천

위의 설명을 통해 UrlRoutingModule은 애플리케이션에 정의된 모든 경로를 알고 있음을 알 수 있습니다. 따라서 올바른 경로가 애플리케이션의 요청과 일치될 수 있습니다.

주목해야 할 중요한 점은 UrlRoutingModule 모듈이 첫 번째 일치 경로를 선택하는 데 관여한다는 것입니다. 따라서 일치 항목이 감지될 때마다 검색 프로세스가 중지됩니다. 이 단계에서 일어나는 일을 요약하자면, 라우트 핸들러는 U RLRoutingModule 을 통해 라우트에 연결됩니다 .

경로 핸들러

maproute의 메서드를 통해 경로는 MvcRouteHandler의 인스턴스에 연결됩니다. IRouteHandler 인터페이스는 MvcRouteHandler를 통해 구현됩니다.

따라서 MvcRouteHandler의 객체는 애플리케이션의 HTTPHandler인 MvcRouteHandler의 것에 대한 참조를 얻기 위해 사용됩니다.

MvcRouteHandler를 만들려면 PostResolveRequestCache() 메서드를 호출해야 합니다. 이 메서드 PostResolveRequestCache()는 다음과 같은 방식으로 정의할 수 있습니다.

원천

따라서 PostResolveRequestCache() 메서드에서 다음과 같은 이벤트가 발생합니다.

  • GetRouteData() 메서드는 RouteCollection 속성에 있습니다. 메서드가 호출되고 HttpContext를 통해 전달됩니다.
  • RouteData 객체는 GetRouteData() 메서드를 통해 반환됩니다.
  • RouteHandler 속성은 현재 요청에 대한 처리기 IRouteHandler를 반환하는 routeData, 즉 MvcRouteHandler에 포함됩니다.
  • G etHttpHandler() 메서드 MvcHandler에 대한 참조를 반환하는 MvcRouteHandler입니다.
  • 그런 다음 컨트롤이 MvcHandler의 인스턴스에 위임됩니다.

MvcHandler

MvcHandler는 HTTP의 일반 핸들러입니다. HTTP의 핸들러이므로 ProcessRequest() 메소드의 구현을 수행한다. 이 메서드 ProcessRequest()는 다음과 같이 정의할 수 있습니다.

원천

ProcessRequest() 메서드는 아래 이미지에 정의된 대로 ProcessRequestInit() 메서드를 호출하는 데 사용됩니다.

원천
ProcessRequest() 메서드에서 다음과 같은 이벤트가 발생합니다.

  • ControllerFactory는 ProcessRequestInit() 메서드를 호출하여 생성됩니다.
  • ControllerFactory는 컨트롤러를 생성합니다.
  • 컨트롤러의 Execute() 메서드가 호출됩니다.

컨트롤러팩토리

ControllerFactory가 ProcessRequest() 메소드를 통해 획득되는 것을 관찰할 수 있습니다. 그런 다음 ControllerFactory는 Controller 개체의 개체를 만드는 데 사용됩니다. IControllerFactory 인터페이스는 컨트롤러 팩토리에 의해 구현됩니다.

기본적으로 MVC 프레임워크는 ControllerBuilder를 사용하여 ControllerFactory를 생성할 때 DefaultControllerFactory 유형을 생성합니다.

다음 코드 줄은 ProcessRequestInit() 메서드에 ControllerFactory를 만듭니다.

원천

제어 장치

Controller 객체는 MvcHandler의 ProcessRequest() 메서드에서 ControllerFactory에서 생성되는 것으로 관찰되었습니다. 생성된 컨트롤러에는 프레임워크에서 수행할 작업에 대한 메서드가 포함되어 있습니다. 브라우저에서 URL 요청이 있을 때마다 작업에 대한 메서드가 호출됩니다. 컨트롤러는 IControlle의 인터페이스를 명시적으로 구현하지 않도록 생성됩니다. Controller 클래스 는 여러 기능을 제공 하는 컨트롤러를 만드는 데 사용됩니다 . Controller의 클래스는 아래 표시된 코드에 정의된 "ControllerBase"라고 하는 다른 Controller 클래스를 상속할 수 있습니다.

원천

ActionInvoker는 컨트롤러에서 작업의 메서드를 호출하는 데 사용됩니다.

컨트롤러 팩토리를 통해 컨트롤러를 생성한 후 다음 이벤트가 발생합니다.

  • controllerbase의 Execute() 메서드를 호출합니다.
  • ExecuteCore() 메서드는 추상으로 선언된 다음 Controller 클래스를 통해 정의되는 Execute() 메서드에 의해 호출됩니다.
  • 액션 이름은 컨트롤러 클래스에 의해 ExecuteCore() 메서드를 통해 RouteData에서 검색됩니다.
  • ActionInvoker의 InvokeAction() 메서드는 ExecuteCore() 메서드에 의해 호출됩니다.

액션 인보커

동작 선택에 사용됩니다.

ActionInvoker 클래스에는 액션 메소드를 찾은 다음 컨트롤러에서 액션 메소드를 호출하는 것을 포함하는 몇 가지 중요한 책임이 있습니다.

ActionInvoker의 InvokeAction() 메서드가 호출될 때 발생하는 이벤트는 다음과 같습니다.

  • 컨트롤러에 대한 정보는 ActionInvoker와 수행에 필요한 작업을 통해 얻어야 합니다.
  • 설명자 개체는 이 정보를 제공합니다.
  • 컨트롤러 이름과 액션 이름은 액션의 디스크립터 클래스와 컨트롤러에서 제공합니다.
  • ActionMethod를 호출하는 중입니다.

작업 결과

ActionResult는 추상 클래스의 유형입니다. 추상 메서드이기 때문에 서로 다른 하위 클래스에서 제공하는 ExecuteResult() 메서드에 대해 서로 다른 구현이 있습니다.

ActionResult에서 다음과 같은 이벤트가 발생합니다.

  • ActionFilters의 OnActionExecuting 메소드 호출이 있습니다.
  • 메서드 작업을 호출합니다.
  • ActionFilters의 OnActionExecuted 메서드 호출.
  • ActionMethod에서 ActionResult의 반환이 있습니다.
  • ActionResult의 ExecuteResult() 메서드를 호출합니다.

뷰엔진

대부분의 애플리케이션은 ViewResult를 반환 유형으로 사용합니다. 뷰는 ViewEngine을 통해 클라이언트에 렌더링됩니다. 이 보기에서 HTML을 생성할 수 있습니다. HTML은 ViewEngine을 통해 보기에서 생성됩니다.

결론

응용 프로그램에서 모든 구성 요소의 역할을 이해하는 것은 중요한 단계입니다. 이런 식으로 구성 요소 간의 연결과 작업 방식을 이해할 수 있습니다. 숙련된 개발자가 되고 싶다면 기술을 마스터하는 것이 한 가지 방법입니다. 응용 프로그램 및 소프트웨어 개발 분야에서 인증 및 전문가 교육을 제공하는 upGrad온라인 소프트웨어 엔지니어링 과정 을 확인할 수 있습니다. 이 과정은 남성 및 여성 전문직 종사자를 위해 설계되었으며 IIIT-B에서 인증을 받았으며 동문 자격을 얻게 됩니다.

MVC의 페이지 수명 주기를 설명할 수 있습니까?

MVC가 적용되면 애플리케이션은 데이터 계층 또는 모델, UI 또는 보기 및 컨트롤러의 세 가지 계층으로 나뉩니다. MVC의 각 계층은 다른 기능을 가지고 있습니다. 첫째, UI 또는 View 레이어는 사용자 인터페이스입니다. 사용자와 응용 프로그램 간의 주요 인터페이스입니다. 사용자 입력을 수신하고 결과를 제시하는 역할을 합니다. 그런 다음 컨트롤러는 뷰 계층의 모든 구성 요소에 연결되고 사용자 입력을 처리하고 데이터를 모델 계층으로 보내고 결과를 다시 사용자에게 보냅니다. 모델 레이어는 데이터가 저장되는 곳입니다. 데이터를 제어하는 ​​역할을 합니다. 또한 모델 계층은 스토리지에 대한 데이터 읽기 및 쓰기도 담당합니다.

MVC에서 세션을 어떻게 유지할 수 있습니까?

ASP.NET MVC 프레임워크는 ASP.NET 세션 상태의 기능을 활용합니다. 세션 상태는 ASP.NET 플랫폼에 기본 제공되는 웹 서비스입니다. 주어진 세션과 관련된 모든 개체, 데이터 및 기타 정보를 유지 관리하는 역할을 합니다. SessionState 개체는 세션 상태 값을 유지 관리합니다. 또한 Session 개체의 값을 채우고 유지 관리하는 역할도 합니다. Session 개체는 세션 상태에 대한 게이트웨이 역할을 합니다. SessionState 개체의 속성이며 세션 상태에 대한 값을 저장하고 검색하는 데 사용됩니다.

MVC에는 몇 가지 유형의 필터가 있습니까?

MVC의 필터는 컨트롤러와 모델 사이에 위치하며 사용자 입력을 확인하거나 모델의 출력을 수정하는 데 사용할 수 있습니다. 다음은 MVC의 일부 필터입니다. 1. 유효성 검사 필터 - 유효성 검사 필터는 사용자 입력의 유효성을 검사하는 데 도움이 됩니다. 2. 작업 필터 - 작업 필터는 모델의 출력을 수정하는 데 도움이 됩니다. 3. 모델 필터 - 모델 필터는 모델의 출력을 수정하는 데 도움이 됩니다. 4. 출력 필터 - 출력 필터는 모델의 출력을 수정하는 데 사용됩니다.