コントロールとアダプタの相互作用
更新 : 2007 年 11 月
ASP.NET モバイル コントロールおよび関連付けられたアダプタのライフ サイクルには、2 種類の相互作用が発生します。1 つはコントロールとデバイス アダプタとの相互作用で、もう 1 つはページとページ アダプタとの相互作用です。
コントロールとコントロール デバイス アダプタ
モバイル コントロールのライフ サイクルの間には、コントロールおよび関連付けられたデバイス アダプタの間に以下の相互作用が発生します。
ASP.NET が、ページのコピーがキャッシュにあるかどうかを最初にチェックします。コピーがキャッシュにある場合は、キャッシュされているページをクライアントに送信します。キャッシュの詳細については、「モバイル テキスト ライタ レンダリングのベスト プラクティス」の「出力のキャッシュ」セクションを参照してください。
コントロールが作成されます。コントロールの Adapter プロパティに最初にアクセスするときに、コントロール アダプタが選択され、その新しいインスタンスが作成されます。これについては、「アダプタのマッピング」の「デバイス アダプタの選択プロセスの理解」というセクションで説明されています。
コントロール デバイス アダプタの Control は、新しいアダプタの作成時に設定されます。
ページがキャッシュされている場合、ページはアダプタを呼び出して、ほかのヘッダーによってキャッシュ内容を変更する必要があるかどうかを調べます。
コントロールの OnInit メソッドが呼び出されます。MobileControl 基本クラスの実装は、コントロール デバイス アダプタの OnInit メソッドを呼び出します。
コントロールのプライベート ViewState が存在する場合は、ViewState が読み込まれます。デバイス アダプタがコントロールのデバイス固有の状態を格納している場合、LoadPrivateViewState メソッドの MobileControl 基本クラスの実装はコントロール デバイス アダプタの LoadAdapterState メソッドを呼び出します。
コントロールの OnLoad メソッドが呼び出されます。MobileControl 基本クラスの実装は、コントロール デバイス アダプタの OnLoad メソッドを呼び出します。
コントロールが IPostBackEventHandler インターフェイスを実装している場合、コントロールがポストバック イベントを受け取ると、そのコントロールの RaisePostBackEvent メソッドが呼び出されます。コントロールに送られたイベントがターゲット デバイスに応じて変更可能な場合、このメソッドのコントロールの実装はコントロール デバイス アダプタの HandlePostBackEvent メソッドを呼び出します。HandlePostBackEvent メソッドは、イベントがデバイス アダプタによって処理されたかどうかに応じて、true または false を返します。
コントロールのプライベート ViewState が適用可能な場合、ViewState が保存されます。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 メソッドを呼び出します (適用可能な場合)。このメソッドは、要求の変数を検査および修正できます。また、このメソッドは永続化された ViewState 情報がまだフォーム変数にない場合、この情報をフォーム変数に変換します。
ページのプライベート ViewState が適用可能な場合、ViewState が読み込まれます。アダプタが、ページのデバイス固有の ViewState を格納している場合、MobilePage 基本クラスはページ アダプタの LoadAdapterState メソッドを呼び出します。
ページの OnLoad メソッドが呼び出されます。MobilePage 基本クラスの実装は、ページ アダプタの OnLoad メソッドを呼び出します。
ページのプライベート ViewState が適用可能な場合、その ViewState が保存されます。アダプタが、ページのデバイス固有の ViewState を格納する必要がある場合、MobilePage 基本クラスはページ アダプタのSaveAdapterState メソッドを呼び出します。
MobilePage 基本クラスは、ページ アダプタの SaveViewState メソッドを呼び出します。このメソッドは、パラメータとして渡されたステートが書き込まれたページに対してシリアル化されるようにします。
改ページ調整中、MobilePage 基本クラスはページ アダプタの OptimumPageWeight プロパティにアクセスします。アダプタは、ターゲット デバイスに適したページのウエイトを返します。
ページの OnPreRender メソッドが呼び出されます。MobilePage 基本クラスの実装は、ページ アダプタの OnPreRender メソッドを呼び出します。
ページの出力をキャプチャするため、ライタ インスタンスが作成されます。MobilePage 基本クラスは、ターゲット固有のテキスト ライタを返す、ページ アダプタの CreateTextWriter メソッドを呼び出します。
ページの Render メソッドが呼び出されます。MobilePage 基本クラスの実装は、ページ アダプタの Render メソッドを呼び出します。アダプタは、レンダリングのいずれかの時点で、ページの ClientViewState プロパティを通じて、ページのプライベート ViewState へのアクセスおよび書き込みを行います。
ページの OnUnload メソッドが呼び出されます。MobilePage 基本クラスの実装は、ページ アダプタの OnUnload メソッドを呼び出します。