ASP.NET 페이지 클래스 개요
업데이트: 2007년 11월
ASP.NET 페이지가 요청되어 브라우저에 태그를 렌더링할 때는 사용자가 페이지에 대해 만든 코드 외에도 다른 코드가 실행됩니다. 대신 ASP.NET에서는 페이지 실행에 필요한 작업을 실제로 수행하는 하나 이상의 클래스를 런타임에 생성하고 컴파일합니다. 이 항목에서는 런타임에 생성되는 코드에 대한 개요를 제공합니다.
페이지 클래스 코드 생성 및 실행
ASP.NET 페이지는 컨트롤과 같은 페이지의 서버측 요소를 사용자가 작성한 이벤트 처리 코드와 조합하여 하나의 단위로 실행됩니다. 사용자는 페이지를 어셈블리로 미리 컴파일할 필요가 없습니다. ASP.NET은 사용자가 페이지를 처음 요청할 때 동적으로 페이지를 컴파일하고 실행합니다. 페이지 또는 페이지가 종속된 리소스가 변경된 경우 페이지는 자동으로 다시 컴파일됩니다. 컴파일러가 만드는 클래스는 단일 파일 모델 또는 코드 숨김 모델 중 페이지에서 사용하는 모델에 따라 다릅니다.
ASP.NET에서는 웹 사이트를 미리 컴파일하는 기능도 지원하여 성능을 개선하고 오류 검사를 수행하며 사이트 배포도 지원합니다. 자세한 내용은 ASP.NET 웹 사이트 미리 컴파일 개요를 참조하십시오. 미리 컴파일하는 방법은 단일 파일 모델과 코드 숨김 페이지 모델에 모두 적용할 수 있으며 결과도 같습니다.
단일 파일 페이지
단일 파일 페이지의 경우 태그, 서버측 요소 및 이벤트 처리 코드는 모두 단일 .aspx 파일에 포함됩니다. 페이지를 컴파일하면 컴파일러는 기본 Page 클래스나 @ Page 지시문의 Inherits 특성으로 정의된 사용자 지정 기본 클래스에서 파생되는 새 클래스를 생성하고 컴파일합니다. 예를 들어, 응용 프로그램의 루트 디렉터리에 SamplePage1이라는 새 ASP.NET 웹 페이지를 만들면 Page 클래스에서 ASP.SamplePage1_aspx라는 새 클래스가 파생됩니다. 응용 프로그램 하위 폴더 내 페이지의 경우 하위 폴더 이름이 생성된 클래스의 일부로 사용됩니다. 생성된 클래스에는 .aspx 페이지의 컨트롤에 대한 선언, 이벤트 처리기 및 기타 사용자 지정 코드가 포함됩니다.
페이지를 생성하고 나면 생성된 클래스는 어셈블리로 컴파일되고, 이 어셈블리는 응용 프로그램 도메인에 로드됩니다. 그런 다음 페이지 클래스가 인스턴스화된 후 실행되어 브라우저로 출력을 렌더링합니다. 컨트롤을 추가하거나 코드를 수정하는 것과 같이 생성된 클래스에 영향을 줄 수 있는 변경 사항이 페이지에 발생하면 컴파일된 클래스 코드는 무효화되고 새 클래스가 생성됩니다. ASP.NET의 컴파일에 대한 자세한 내용은 ASP.NET 컴파일 개요를 참조하십시오.
다음 그림에서는 단일 파일 ASP.NET 웹 페이지의 페이지 클래스에 대한 상속 모델을 보여 줍니다.
코드 숨김 페이지
코드 숨김 모델의 경우 컨트롤 선언을 비롯한 페이지의 태그 및 서버측 요소는 .aspx 파일에 포함되고 페이지 코드는 개별 코드 파일에 포함됩니다. 코드 파일에는 partial 클래스가 포함됩니다. partial 클래스는 페이지의 전체 클래스를 구성하는 전체 코드 중 일부만 포함되었음을 나타내는 partial(Visual Basic에서는 Partial) 키워드가 포함된 클래스 선언입니다. partial 클래스에서 사용자는 페이지에 대해 응용 프로그램에 필요한 코드를 추가합니다. 이 클래스는 일반적으로 이벤트 처리기로 구성되지만 필요한 메서드나 속성을 포함할 수 있습니다.
코드 숨김 페이지의 상속 모델은 단일 파일 페이지의 상속 모델보다 조금 복잡합니다. 모델은 다음과 같습니다.
코드 숨김 파일에는 기본 페이지 클래스에서 상속되는 partial 클래스가 포함됩니다. 기본 페이지 클래스는 Page 클래스일 수 있으며, 또는 Page에서 파생된 다른 클래스일 수 있습니다.
.aspx 파일에는 코드 숨김 partial 클래스에 대한 @ Page 지시문의 Inherits 특성이 포함됩니다.
페이지를 컴파일할 때 ASP.NET에서는 .aspx 파일에 대한 partial 클래스를 만듭니다. 이 클래스는 코드 숨김 클래스 파일의 partial 클래스입니다. 생성된 partial 클래스 파일에는 페이지의 컨트롤에 대한 선언이 포함됩니다. 이 partial 클래스를 사용하면 컨트롤을 명시적으로 선언할 필요 없이 코드 숨김 파일을 전체 클래스의 일부로 사용할 수 있습니다.
마지막으로 ASP.NET에서는 3단계에서 생성한 클래스에서 상속되는 또 하나의 클래스를 생성합니다. 두 번째로 생성된 이 클래스는 페이지 빌드에 필요한 코드를 포함합니다. 두 번째로 생성된 클래스와 코드 숨김 클래스는 브라우저에 출력을 렌더링하기 위해 실행되는 어셈블리로 컴파일됩니다.
다음 그림에서는 코드 숨김 ASP.NET 웹 페이지의 페이지 클래스에 대한 상속 모델을 보여 줍니다.