Вчера вечером я развертывал приложение ASP.NET MVC и обнаружил, что развертывание IIS7 в интегрированном режиме требует меньше усилий. У меня вопрос в чем разница? И каковы последствия использования одного или другого?
asp.net
asp.net-mvc
iis
iis-7
integrated-pipeline-mode
Джон Эриксон
источник
источник
Ответы:
Классический режим (единственный режим в IIS6 и ниже) - это режим, в котором IIS работает только с расширениями ISAPI и фильтрами ISAPI напрямую. Фактически, в этом режиме ASP.NET является просто расширением ISAPI (aspnet_isapi.dll) и фильтром ISAPI (aspnet_filter.dll). IIS просто рассматривает ASP.NET как внешний плагин, реализованный в ISAPI, и работает с ним как с черным ящиком (и только тогда, когда ему нужно передать запрос в ASP.NET). В этом режиме ASP.NET не сильно отличается от PHP или других технологий для IIS.
Интегрированный режим, с другой стороны, является новым режимом в IIS7, где конвейер IIS тесно интегрирован (то есть точно такой же) с конвейером запросов ASP.NET. ASP.NET может видеть каждый запрос и манипулировать им по пути. ASP.NET больше не рассматривается как внешний плагин. Он полностью смешан и интегрирован в IIS. В этом режиме ASP.NET в
HttpModule
основном обладают почти такой же мощью, как и фильтр ISAPI, а ASP.NETHttpHandler
могут иметь почти такую же возможность, как расширение ISAPI. В этом режиме ASP.NET в основном является частью IIS.источник
HttpModules
методами / событиями вiis7
больше функциональности, чем вiis6
? Вы можете уточнить это?Взято из: В чем разница между DefaultAppPool и Classic .NET AppPool в IIS7?
Первоначальный источник: Введение в архитектуру IIS
источник
ASP.NET интегрировался с IIS через расширение ISAPI, C API (API, основанный на языке программирования C) и предоставил свою собственную модель обработки приложений и запросов.
Это эффективно выявило два отдельных конвейера сервера (запрос / ответ), один для собственных фильтров ISAPI и компонентов расширения, а другой для компонентов управляемого приложения. Компоненты ASP.NET будут выполняться полностью внутри пузыря расширения ISAPI ASP.NET И ТОЛЬКО для запросов, сопоставленных с ASP.NET в конфигурации сопоставления сценариев IIS.
Запросы к типам содержимого, не относящимся к ASP.NET: - изображения, текстовые файлы, HTML-страницы и ASP-страницы без сценариев обрабатывались IIS или другими расширениями ISAPI и НЕ были видны ASP.NET.
Основным ограничением этой модели было то, что службы, предоставляемые модулями ASP.NET и пользовательским кодом приложения ASP.NET, НЕ были доступны для запросов не ASP.NET
Что такое КАРТА СКРИПТА?
Карты сценариев используются для связи расширений файлов с обработчиком ISAPI, который выполняется при запросе файлов этого типа. Карта сценариев также имеет необязательный параметр, который проверяет, существует ли физический файл, связанный с запросом, прежде чем разрешить обработку запроса.
Хорошим примером может быть
seen here
IIS 7.0 и выше были переработаны с нуля, чтобы обеспечить совершенно новый ISAPI на основе C ++ API.
IIS 7.0 и выше интегрирует среду выполнения ASP.NET с основными функциями веб-сервера, обеспечивая унифицированный (единый) конвейер обработки запросов, который доступен как для собственных, так и для управляемых компонентов, известных как модули (IHttpModules)
Это означает, что IIS 7 обрабатывает запросы, поступающие для любого типа контента,
NON ASP.NET Modules / native IIS modules
иASP.NET modules
обеспечивает обработку запросов на всех этапах. Это является причиной, по которой типы контента NON ASP.NET (.html, статические файлы) могут обрабатываться модулями .NET. ,IHttpModule
), которые могут выполняться для всего содержимого приложения и которые предоставляют вашему приложению расширенный набор служб обработки запросов.IHttpHandler
)источник
В классическом режиме IIS работает с расширениями ISAPI и фильтрами ISAPI напрямую. И использует две конвейерные линии, одну для собственного кода и другую для управляемого кода. Вы можете просто сказать, что в классическом режиме IIS 7.x работает так же, как IIS 6, и вы не получаете дополнительных преимуществ от функций IIS 7.x.
В интегрированном режиме IIS и ASP.Net тесно связаны, а не зависят от двух DLL на Asp.net, как в классическом режиме.
источник