В чем разница между «классическим» и «интегрированным» конвейерным режимом в IIS7? - PullRequest
476 голосов
/ 04 апреля 2009

Вчера вечером я развертывал приложение ASP.NET MVC и обнаружил, что развертывание IIS7 в интегрированном режиме требует меньше усилий. У меня вопрос в чем разница? И каковы последствия использования одного или другого?

Ответы [ 4 ]

630 голосов
/ 04 апреля 2009

Классический режим (единственный режим в 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.NET HttpHandler могут иметь почти такую ​​же возможность, как расширение ISAPI. В этом режиме ASP.NET в основном является частью IIS.

110 голосов
/ 28 декабря 2012

Режим интегрированного пула приложений

Когда пул приложений находится в интегрированном режиме, вы можете воспользоваться интегрированной архитектуры обработки запросов IIS и ASP.NET. Когда рабочий процесс в пуле приложений получает запрос, Запрос проходит через упорядоченный список событий. Каждое событие вызывает необходимые собственные и управляемые модули для обработки частей запросить и сгенерировать ответ.

Существует несколько преимуществ запуска пулов приложений в Integrated. Режим. Сначала используются модели обработки запросов IIS и ASP.NET. интегрированы в единую модель процесса. Эта модель исключает шаги которые ранее дублировались в IIS и ASP.NET, такие как аутентификация. Кроме того, интегрированный режим обеспечивает доступность управляемых функций для всех типов контента.

Классический режим пула приложений

Когда пул приложений находится в классическом режиме, IIS 7.0 обрабатывает запросы как в режиме изоляции рабочих процессов IIS 6.0. ASP.NET запросы сначала идут через собственные этапы обработки в IIS, а затем направляются в Aspnet_isapi.dll для обработки управляемого кода в управляемом во время выполнения. Наконец, запрос направляется обратно через IIS для отправки ответ.

Это разделение моделей обработки запросов IIS и ASP.NET. приводит к дублированию некоторых этапов обработки, таких как аутентификация и авторизация. Кроме того, функции управляемого кода, такие как проверка подлинности форм, доступны только для ASP.NET приложения или приложения, для которых у вас есть сценарий сопоставил все запросы, обрабатываемые aspnet_isapi.dll.

Обязательно протестируйте существующие приложения на совместимость в Интегрированный режим перед обновлением производственной среды до IIS 7.0 и назначение приложений в пулы приложений в интегрированном режиме. Вы должны только добавить приложение в пул приложений в Classic режим, если приложение не работает в интегрированном режиме. Например, Ваше приложение может использовать маркер аутентификации, переданный из IIS к управляемой среде выполнения и, благодаря новой архитектуре в IIS 7.0, процесс ломает ваше приложение.

Взято из: В чем разница между DefaultAppPool и Classic .NET AppPool в IIS7?

Оригинальный источник: Введение в архитектуру IIS

11 голосов
/ 25 сентября 2015

IIS 6.0 и предыдущие версии:

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 и выше

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)
5 голосов
/ 17 апреля 2013

В классическом режиме IIS напрямую работает с расширениями ISAPI и фильтрами ISAPI. И использует две конвейерные линии, одну для собственного кода и другую для управляемого кода. Вы можете просто сказать, что в классическом режиме IIS 7.x работает так же, как IIS 6, и вы не получаете дополнительных преимуществ от функций IIS 7.x.

В интегрированном режиме IIS и ASP.Net тесно связаны, а не зависят от двух DLL на Asp.net, как в случае классического режима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...