ASP.NET — очень мощная платформа для создания веб-приложений. Она обеспечивает большую гибкость и возможности, позволяющие использовать ее для создания всех типов веб-приложений.
Большинство людей знакомы только с платформами высокого уровня, такими как WebForms и WebServices — они находятся на вершине иерархии ASP.NET.
Информация в этой статье собрана и обобщена из различных общедоступных документов Microsoft. Сравнивая процессы обработки запросов трех поколений IIS, IIS5, IIS6 и IIS7, мы можем ознакомиться с базовым механизмом ASP.NET и понять, как это работает. запросы обрабатываются из Интернета. Сервер взаимодействует со средой выполнения ASP.NET. Поняв основной механизм, мы сможем глубже понять ASP.net.
Процесс обработки запроса ASP.net в IIS 5Примечательной особенностью IIS 5.x является разделение веб-сервера и реального приложения ASP.NET. В качестве веб-сервера IIS работает в процессе под названием InetInfo.exe. InetInfo.exe является встроенным исполнительным механизмом и не является управляемой программой. Наше настоящее приложение ASP.NET работает в рабочем процессе под названием aspnet_wp. Выше CLR загружается. процесс инициализируется, поэтому это управляемая среда.
ISAPI: относится к приложениям, которые могут обрабатывать различные суффиксы. ISAPI — это аббревиатура следующих слов: Интерфейс прикладного программирования интернет-сервера, Интерфейс прикладного программирования интернет-сервера.
Особенности режима IIS 5:1. Во-первых, на одном и том же хосте одновременно может быть запущен только один процесс aspnet_wp. Каждое приложение ASP.NET, основанное на виртуальном каталоге, соответствует домену приложения, что означает, что каждое приложение выполняется на одном и том же хосте. то же самое. В рабочем процессе изоляция между приложениями основана на домене приложения, а не на процессе.
2. Во-вторых, ASP.NET ISAPI отвечает не только за создание рабочего процесса aspnet_wp, но и за мониторинг этого процесса. Если будет обнаружено, что производительность aspnet_wp упадет до определенного установленного нижнего предела, ответственность будет нести ASP.NET ISAPI. для завершения процесса. Когда aspnet_wp завершится, последующий запрос приведет к тому, что ASP.NET ISAPI заново создаст новый рабочий процесс aspnet_wp.
3. Наконец, поскольку IIS и приложение выполняются в своих собственных процессах, для связи между ними должен использоваться определенный механизм связи. По сути, связь между процессом InetInfo, где расположен IIS, и рабочим процессом — это связь между различными процессами на одном компьютере (локальное межпроцессное взаимодействие). Из соображений производительности между ними используется механизм связи, основанный на именованном канале. Связь между ASP.NET ISAPI и рабочим процессом реализуется через набор каналов между ними. Также из соображений производительности ASP.NET ISAPI передает запрос рабочему процессу асинхронно и получает ответ, но рабочий процесс получает некоторые серверные переменные от ASP.NET ISAPI синхронно.
Процесс обработки запроса ASP.net IIS6IIS 5.x отслеживает запрос через InetInfo.exe и распределяет запрос по рабочему процессу. Другими словами, за мониторинг и распространение запросов в IIS 5. отвечает http.sys.
Примечание. Чтобы запретить пользовательским приложениям получать доступ к критически важным данным операционной системы или изменять их, Windows предоставляет два режима доступа к процессору: пользовательский режим и режим ядра. Обычно пользовательские программы работают в пользовательском режиме, а код операционной системы — в режиме ядра. Код режима ядра обеспечивает доступ ко всей системной памяти и всем инструкциям ЦП.
В пользовательском режиме http.sys получает http-запрос на основе aspx, а затем проверяет, к какому пулу приложений принадлежит приложение на основе запроса в соответствии с метабазой в IIS. Если пул приложений не существует, создайте его. В противном случае запрос отправляется непосредственно в очередь, соответствующую пулу приложений.
Каждый пул приложений соответствует рабочему процессу: w3wp.exe, который, несомненно, работает в пользовательском режиме. Сопоставление пула приложений и рабочих процессов поддерживается в метабазе IIS. На основе такого сопоставления WAS (служба веб-администрирования) передает запрос, существующий в очереди пула приложений, соответствующему рабочему процессу (если нет, создайте такой процесс). При инициализации рабочего процесса загружается ASP.NET ISAPI, а затем ASP.NET ISAPI загружает среду CLR. Конечный процесс аналогичен IIS 5.x: создайте домен приложения для приложения с помощью метода Create AppManagerAppDomainFactory; обработайте запрос с помощью ProcessRequest ISAPIRuntime, а затем введите процесс в конвейер выполнения ASP.NET Http.
Процесс обработки запроса ASP.net IIS 7