컨트롤 및 어댑터 상호 작용
업데이트: 2007년 11월
ASP.NET 모바일 컨트롤과 이 컨트롤에 연결된 어댑터가 실행되는 동안에는 컨트롤과 장치 어댑터 간의 상호 작용 및 페이지와 페이지 어댑터 간의 상호 작용이 발생합니다.
컨트롤 및 컨트롤 장치 어댑터
모바일 컨트롤이 실행되는 동안 컨트롤과 해당 컨트롤에 연결된 장치 어댑터는 다음과 같이 상호 작용합니다.
먼저 ASP.NET은 페이지 복사본이 캐시에 있는지 확인하여 복사본이 있으면 캐시된 페이지를 클라이언트에 전송합니다. 캐싱에 대한 자세한 내용은 모바일 텍스트 작성기 렌더링 구현 방법의 "출력 캐싱" 부분을 참조하십시오.
컨트롤이 만들어집니다. 컨트롤의 Adapter 속성에 처음 액세스하면 컨트롤 어댑터가 선택되고 이 컨트롤 어댑터의 새 인스턴스가 만들어집니다. 어댑터 매핑의 "장치 어댑터 선택 프로세스 이해" 부분을 참조하십시오.
새 어댑터가 만들어질 때 컨트롤 장치 어댑터의 Control이 설정됩니다.
페이지가 캐시된 경우, 페이지에서는 추가 헤더를 기준으로 캐싱을 다르게 수행해야 할지 확인하기 위해 어댑터를 호출합니다.
컨트롤의 OnInit 메서드가 호출됩니다. MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 OnInit 메서드를 호출합니다.
컨트롤의 전용 뷰 상태가 로드됩니다(있는 경우). 장치 어댑터에서 컨트롤의 장치별 상태를 저장하는 경우, LoadPrivateViewState 메서드의 MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 LoadAdapterState 메서드를 호출합니다.
컨트롤의 OnLoad 메서드가 호출됩니다. MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 OnLoad 메서드를 호출합니다.
컨트롤이 IPostBackEventHandler 인터페이스를 구현하고 다시 게시 이벤트를 받으면 컨트롤의 RaisePostBackEvent 메서드가 호출됩니다. 대상 장치에 따라 컨트롤에 전송되는 이벤트가 달라질 수 있는 경우 컨트롤에서 이 메서드를 구현하면 컨트롤 장치 어댑터의 HandlePostBackEvent 메서드가 호출됩니다. HandlePostBackEvent 메서드는 장치 어댑터에서 이벤트를 처리했는지 여부를 나타내는 true 또는 false를 반환합니다.
컨트롤의 전용 뷰 상태가 저장됩니다(있는 경우). 장치 어댑터에서 컨트롤의 장치별 상태를 저장해야 하는 경우, SavePrivateViewState 메서드의 MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 SaveAdapterState 메서드를 호출합니다.
컨트롤의 OnPreRender 메서드가 호출됩니다. MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 OnPreRender 메서드를 호출합니다.
컨트롤의 Render 메서드가 호출됩니다. MobileControl 기본 클래스 구현은 컨트롤 어댑터의 Render 메서드를 호출합니다.
컨트롤의 OnUnload 메서드가 호출됩니다. MobileControl 기본 클래스 구현은 컨트롤 장치 어댑터의 OnUnload 메서드를 호출합니다.
페이지 및 페이지 어댑터
MobilePage 클래스는 MobileControl 클래스 대신 .NET Framework Page 클래스에서 상속되지만 MobilePage 클래스의 어댑터 관련 동작은 MobileControl 클래스의 동작과 매우 유사합니다.
ChtmlPageAdapter, HtmlPageAdapter, WmlPageAdapter, XhtmlPageAdapter 등의 ASP.NET 모바일 페이지 어댑터는 IPageAdapter 인터페이스(IControlAdapter 인터페이스 구현)를 구현하므로 페이지 어댑터는 컨트롤 어댑터와 매우 유사한 방식으로 실행됩니다. 모바일 페이지와 해당 장치 어댑터는 Page 클래스를 기준으로 상호 작용하며, 수명 주기 동안 다음과 같은 단계를 수행합니다.
ASP.NET에서 페이지를 만듭니다. 페이지의 Adapter 속성에 처음 액세스하면 페이지 어댑터가 선택되고 이 페이지 어댑터의 인스턴스가 만들어집니다. 어댑터 매핑의 "장치 어댑터 선택 프로세스 이해" 부분을 참조하십시오. 페이지 어댑터의 Page 속성은 어댑터가 만들어질 때 설정됩니다.
페이지의 OnInit 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 OnInit 메서드를 호출합니다.
페이지의 OnDeviceCustomize 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 OnDeviceCustomize 메서드를 호출합니다.
페이지의 다시 게시 모드를 확인하기 위해 MobilePage 기본 클래스는 사용 가능한 경우 페이지 어댑터의 DeterminePostBackMode 메서드를 호출합니다. 이 메서드를 사용하면 요청 변수를 검사하고 수정할 수 있습니다. 또한 이 메서드는 지속된 뷰 상태 정보를 폼 변수로 변환합니다(폼 변수에 없는 경우).
페이지의 전용 뷰 상태가 로드됩니다(있는 경우). 어댑터에서 페이지의 장치별 뷰 상태를 저장하는 경우, MobilePage 기본 클래스는 페이지 어댑터의 LoadAdapterState 메서드를 호출합니다.
페이지의 OnLoad 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 OnLoad 메서드를 호출합니다.
페이지의 전용 뷰 상태가 저장됩니다(있는 경우). 어댑터에서 페이지의 장치별 뷰 상태를 저장해야 하는 경우, MobilePage 기본 클래스는 페이지 어댑터의 SaveAdapterState 메서드를 호출합니다.
MobilePage 기본 클래스는 페이지 어댑터의 SaveViewState 메서드를 호출합니다. 이 메서드는 매개 변수로 전달된 상태를 작성된 페이지에 serialize합니다.
페이지 매김을 수행하는 동안 MobilePage 기본 클래스는 페이지 어댑터의 OptimumPageWeight 속성에 액세스하고 대상 장치에 적합한 페이지 무게를 반환합니다.
페이지의 OnPreRender 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 OnPreRender 메서드를 호출합니다.
페이지 출력을 캡처하기 위해 작성기 인스턴스가 만들어집니다. MobilePage 기본 클래스는 페이지 어댑터의 CreateTextWriter 메서드를 호출하며, 이 메서드는 대상 장치에 맞는 텍스트 작성기를 반환해야 합니다.
페이지의 Render 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 Render 메서드를 호출합니다. 렌더링을 수행하는 동안 어댑터는 페이지의 ClientViewState 속성을 통해 페이지에 액세스하고 페이지의 전용 뷰 상태를 작성합니다.
페이지의 OnUnload 메서드가 호출됩니다. MobilePage 기본 클래스 구현은 페이지 어댑터의 OnUnload 메서드를 호출합니다.