ASP.NET 수명 주기는 다음 방법을 지정합니다.
ASP.NET은 페이지를 처리하여 동적 출력을 생성합니다.
애플리케이션과 해당 페이지가 인스턴스화되고 처리됩니다.
ASP.NET은 페이지를 동적으로 컴파일합니다.
ASP.NET 수명 주기는 두 그룹으로 나눌 수 있습니다.
애플리케이션 수명주기
페이지 수명주기
애플리케이션 수명주기에는 다음 단계가 있습니다.
사용자는 페이지인 애플리케이션의 리소스에 대한 액세스를 요청합니다. 브라우저는 이 요청을 웹 서버로 보냅니다.
통합 파이프라인이 첫 번째 요청을 수신하면 다음 이벤트가 발생합니다.
ApplicationManager 클래스의 객체가 생성됩니다.
정보 리소스를 제공하기 위해 HostingEnvironment 클래스의 개체가 생성됩니다.
응답 개체를 만듭니다. HttpContext, HttpRequest 및 HttpResponse와 같은 애플리케이션 개체가 생성되고 초기화됩니다.
HttpApplication 개체의 인스턴스가 생성되어 요청에 할당됩니다.
요청은 HttpApplication 클래스에 의해 처리됩니다. 다양한 이벤트가 이러한 처리 요청을 트리거합니다.
페이지가 요청되면 페이지가 서버 메모리에 로드된 다음 처리되어 브라우저에 제공됩니다. 그런 다음 메모리에서 언로드합니다. 이러한 각 단계에서 메서드와 이벤트를 사용할 수 있으며 애플리케이션의 필요에 따라 조정할 수 있습니다. 즉, 기본 코드를 대체하기 위해 자신만의 코드를 작성할 수 있습니다.
페이지 클래스는 페이지의 모든 컨트롤에 대한 계층적 트리를 만듭니다. 지시어를 제외한 페이지의 모든 구성 요소는 컨트롤 트리의 일부입니다. 페이지 지시문에 Trace = "true"를 추가하면 컨트롤 트리를 볼 수 있습니다. 페이지 지시문을 무시하고 '지시문' 및 '이벤트 처리'에서 이를 추적합니다.
페이지 수명주기 단계는 다음과 같습니다.
초기화
페이지 제어 인스턴스화
상태 복구 및 유지 관리
이벤트 처리 코드 실행
페이지 표시
페이지 주기를 이해하면 페이지 수명 주기의 모든 단계에서 특정 작업이 발생할 수 있도록 코드를 작성하는 데 도움이 됩니다. 또한 사용자 지정 컨트롤을 작성하고 적시에 초기화하고 해당 속성을 뷰 상태의 데이터로 채우고 컨트롤 동작에 대한 코드를 실행하는 데 도움이 됩니다.
다음은 ASP.NET 페이지의 다양한 단계입니다.
페이지 요청 - ASP.NET은 페이지 요청을 받으면 페이지를 구문 분석하고 컴파일할지 아니면 페이지의 캐시된 버전을 그에 따라 응답할지 결정합니다.
페이지 수명 주기 시작 - 이 단계에서는 요청 및 응답 개체가 설정됩니다. 이전 요청이거나 포스트백인 경우 페이지의 IsPostBack 속성이 올바른 것으로 설정됩니다. 페이지 ULCulture 속성도 설정됩니다.
페이지 초기화 - 이 단계에서는 UniqueID 속성을 설정하여 페이지의 컨트롤에 고유 ID가 할당되고 테마가 적용됩니다. 새 요청의 경우 포스트백 데이터가 로드되고 컨트롤 속성이 해당 뷰 상태 값으로 복원됩니다.
페이지 로드 - 이 단계에서는 보기 상태 및 컨트롤 상태 값을 사용하여 컨트롤 속성이 설정됩니다.
유효성 검사 - 유효성 검사 컨트롤의 유효성 검사 메서드가 성공적으로 호출되어 실행되며 페이지의 IsValid 속성이 true로 설정됩니다.
포스트백 이벤트 처리 - 요청이 포스트백(이전 요청)인 경우 해당 이벤트 핸들러가 호출됩니다.
페이지 표시 - 이 단계에서는 페이지의 보기 상태와 모든 컨트롤이 저장됩니다. 페이지는 각 컨트롤에 대한 표시 메서드를 호출하고 렌더링된 출력은 페이지 응답 속성의 OutputStream 클래스에 기록됩니다.
언로드됨 - 표시된 페이지가 클라이언트에 제공되며 응답 및 요청과 같은 페이지 속성이 언로드되고 모두 지워집니다.
페이지 수명 주기의 각 단계에서 페이지는 일정 시간 동안 실행되고 인코딩됩니다. 이벤트 핸들러는 기본적으로 OnClick과 같은 선언적 속성이나 핸들러를 사용하여 이벤트에 바인딩되는 함수 또는 서브루틴입니다.
다음은 페이지 수명 주기 이벤트입니다.
PreInit - PreInit은 페이지 수명 주기의 첫 번째 이벤트입니다. IsPostBack 속성을 확인하고 페이지가 다시 게시되는지 여부를 결정합니다. 테마와 홈 페이지를 설정하고, 동적 컨트롤을 만들고, 가치 프로필 속성 값을 가져오고 설정합니다. 이 이벤트는 OnPreInit 메서드를 재정의하거나 Page_PreInit 처리기를 생성하여 처리할 수 있습니다.
Init - Init 이벤트는 컨트롤 속성을 초기화하고 컨트롤 트리를 구축합니다. 이 이벤트는 OnInit 메서드를 오버로드하거나 Page_Init 처리기를 생성하여 처리할 수 있습니다.
InitComplete - InitComplete 이벤트를 사용하면 보기 상태를 추적할 수 있습니다. 모든 컨트롤은 보기 상태에서 추적을 활성화합니다.
LoadViewState - LoadViewState 이벤트를 사용하면 뷰 상태 정보를 컨트롤에 로드할 수 있습니다.
LoadPostData - 이 단계에서는 태그로 정의된 모든 입력 필드의 내용이 처리됩니다.
PreLoad - 포스트백 데이터가 컨트롤에 로드되기 전에 PreLoad가 발생합니다. 이 이벤트는 OnPreLoad 메서드를 오버로드하거나 Pre_Load 처리기를 생성하여 처리할 수 있습니다.
Load - Load 이벤트는 먼저 페이지에서 발생한 다음 모든 하위 컨트롤에 재귀적으로 발생합니다. 컨트롤 트리의 컨트롤이 생성됩니다. 이 이벤트는 OnLoad 메서드를 오버로드하거나 Page_Load 처리기를 생성하여 처리할 수 있습니다.
LoadComplete - 로드 프로세스가 완료되고 제어 이벤트 핸들러가 실행되며 페이지 유효성 검사가 발생합니다. 이 이벤트는 OnLoad 메서드를 오버로드하거나 Page_LoadComplete 처리기를 생성하여 처리할 수 있습니다.
PreRender - PreRender 이벤트는 출력이 표시되기 직전에 발생합니다. 이 이벤트를 처리하면 출력이 표시되기 전에 페이지와 컨트롤이 모든 업데이트를 수행할 수 있습니다.
PreRenderComplete - 루프의 모든 하위 컨트롤에 대해 PreRender 이벤트가 발생하면 이 이벤트는 사전 표시 단계가 완료되도록 합니다.
SaveStateComplete - 페이지 제어 상태가 저장됩니다. 개인화, 제어 상태, 보기 상태 정보가 저장됩니다.
UnLoad - UnLoad 단계는 페이지 수명 주기의 마지막 단계입니다. 루프의 모든 컨트롤에 대해 UnLoad 이벤트를 발생시키고 마지막으로 페이지 자체에 대해 이벤트를 발생시킵니다. 마지막으로 데이터베이스 연결과 같은 모든 리소스와 참조를 정리하고 해제합니다. 이 이벤트는 OnLoad 메서드를 조정하거나 Page_UnLoad 처리기를 생성하여 처리할 수 있습니다.