Native-Code通知とManaged-Code通知の比較

IIS 7 Web サーバー コアの統合要求処理パイプラインを使用すると、ネイティブ コード開発者は C++ で HTTP モジュールを記述できますが、ネイティブ コード開発者とマネージド コード開発者が使用できるイベント通知は同じではありません。 C# などのマネージド言語からネイティブ コードに HTTP モジュールを移行する開発者は、新しいモジュールを作成するときにこれらの違いに対処する必要があります。

グローバル通知

IIS 7 を使用すると、開発者はグローバル レベルで通知を処理するネイティブ コード HTTP モジュールを作成できるようになりました。 以前のバージョンの IIS では、開発者は要求レベルでのみ通知を処理する HTTP モジュールを作成できました。 グローバル レベルで通知を処理する HTTP モジュールは、さまざまなサーバー レベルのイベントの通知を処理するために使用されます。

次の表に、ネイティブ コード開発者が使用できるグローバル通知メソッドの一覧を示します。

イベント通知メソッド 説明
OnGlobalApplicationResolveModules IIS が登録済みモジュールを解決するときに呼び出されます。
OnGlobalApplicationStart IIS がアプリケーションを起動するときに呼び出されます。
OnGlobalApplicationStop IIS がアプリケーションを終了したときに呼び出されます。
OnGlobalCacheCleanup IIS がキャッシュをクリアするときに呼び出されます。
OnGlobalCacheOperation IIS がキャッシュ関連の操作を実行するときに呼び出されます。
OnGlobalConfigurationChange 構成ファイルに変更が加えられたときに呼び出されます。
OnGlobalCustomNotification モジュールがユーザー定義通知を生成するときに呼び出されます。
OnGlobalFileChange Web サイト内のファイルが変更されたときに呼び出されます。
OnGlobalHealthCheck 正常性関連の操作の実行時に呼び出されます。
OnGlobalPreBeginRequest 要求が統合された要求処理パイプラインに入る前に呼び出されます。
OnGlobalRSCAQuery Run-Time状態と制御のクエリが実行されたときに呼び出されます。
OnGlobalStopListening IIS が新しい要求の受け入れを停止したときに呼び出されます。
OnGlobalThreadCleanup IIS がスレッド プールにスレッドを返すときに呼び出されます。
OnGlobalTraceEvent トレース イベントが発生したときに呼び出されます。

要求通知の比較

ネイティブ コードとマネージド コードの HTTP モジュールの要求通知メソッドは、さまざまな点で似ていますが、完全には似ていません。 たとえば、決定論的な要求通知メソッドの一覧は、ネイティブ コードモジュールとマネージド コード モジュールではほぼ同じですが、非決定的な要求通知メソッドのリストは大きく異なります。

決定論的要求通知のNative-Code

次の表に、ネイティブ コード開発者が使用できる決定論的な要求通知メソッドの一覧を示します。

イベント通知メソッド イベント後通知メソッド
OnBeginRequest OnPostBeginRequest
OnAuthenticateRequest OnPostAuthenticateRequest
OnAuthorizeRequest OnPostAuthorizeRequest
OnResolveRequestCache OnPostResolveRequestCache
OnMapRequestHandler OnPostMapRequestHandler
OnAcquireRequestState OnPostAcquireRequestState
OnPreExecuteRequestHandler OnPostPreExecuteRequestHandler
OnExecuteRequestHandler OnPostExecuteRequestHandler
OnReleaseRequestState OnPostReleaseRequestState
OnUpdateRequestCache OnPostUpdateRequestCache
OnLogRequest OnPostLogRequest
OnEndRequest OnPostEndRequest

決定論的要求通知のManaged-Code

次の表に、マネージド コード開発者が使用できる決定論的な要求通知メソッドを示します。

イベント通知メソッド イベント後通知メソッド
BeginRequest (なし)
AuthenticateRequest PostAuthenticateRequest
AuthorizeRequest PostAuthorizeRequest
ResolveRequestCache PostResolveRequestCache
MapRequestHandler PostMapRequestHandler
AcquireRequestState PostAcquireRequestState
PreRequestHandlerExecute (なし)
RequestHandlerExecute PostRequestHandlerExecute
ReleaseRequestState PostReleaseRequestState
UpdateRequestCache PostUpdateRequestCache
LogRequest PostLogRequest
Endrequest (なし)

非決定的な要求通知をNative-Codeする

次の表に、ネイティブ コード開発者が使用できる非決定的な要求通知メソッドを示します。

イベント通知メソッド イベント後通知メソッド
OnAsyncCompletion (なし)
OnCustomRequestNotification (なし)
OnMapPath (なし)
OnReadEntity (なし)
OnSendResponse (なし)

非決定的要求通知のManaged-Code

次の表に、マネージド コード開発者が使用できる非決定的な要求通知メソッドを示します。

イベント通知メソッド イベント後通知メソッド
PreSendRequestHeaders (なし)
PreSendRequestContent (なし)

参照

Native-Code HTTP モジュールの作成
Native-Code HTTP モジュールの設計