Сравнение уведомлений Native-Code и Managed-Code
Хотя интегрированный конвейер обработки запросов в ядре веб-сервера IIS 7 позволяет разработчикам машинного кода писать http-модули на C++, уведомления о событиях, доступные разработчикам машинного и управляемого кода, не идентичны. Разработчикам, которые переносят модуль HTTP с управляемого языка, такого как C#, на машинный код, придется устранить эти различия при создании новых модулей.
Глобальные уведомления
С помощью IIS 7 разработчики теперь могут создавать HTTP-модули с собственным кодом, обрабатывающие уведомления на глобальном уровне. В предыдущих версиях IIS разработчики могли создавать HTTP-модули, обрабатывающие уведомления только на уровне запроса. Модули HTTP, обрабатывающие уведомления на глобальном уровне, используются для обработки уведомлений для различных событий уровня сервера.
В следующей таблице перечислены глобальные методы уведомлений, доступные разработчикам машинного кода.
Метод уведомления о событиях | Описание |
---|---|
OnGlobalApplicationResolveModules | Вызывается, когда СЛУЖБЫ IIS разрешают зарегистрированные модули. |
OnGlobalApplicationStart | Вызывается при запуске приложения iis. |
OnGlobalApplicationStop | Вызывается при выходе iis из приложения. |
OnGlobalCacheCleanup | Вызывается, когда службы IIS очищают кэш. |
OnGlobalCacheOperation | Вызывается, когда СЛУЖБЫ IIS выполняют операцию, связанную с кэшем. |
OnGlobalConfigurationChange | Вызывается при изменении файла конфигурации. |
OnGlobalCustomNotification | Вызывается, когда модуль создает определяемое пользователем уведомление. |
OnGlobalFileChange | Вызывается при изменении файла на веб-сайте. |
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-модулей