Программирование в IIS

       

Обзор архитектуры ATL Server


ATL Server связывает классы и функции, хранящиеся в DLL, используя теги в текстовых файлах. В результате этого запросы к IIS могут вызывать функции внутри библиотек и возвращать запрашивающему клиенту содержимое текстового файла вместе с результатами вызова функции. ATL Server использует ISAPI для реализации механизма вызова между текстовыми файлами, IIS и библиотеками DLL с использованием системы командных тегов, поддерживаемой технологией .NET. Простейшее программное решение ATL Server включает в себя следующие компоненты.

  • Библиотека DLL расширения ISAPI.
  • Библиотека DLL интернет-приложения или DLL поддержки запросов.
  • Файл ответа сервера (SRF).
  • Службы IIS.

При отправке запросов в IIS на ресурс, которым является источник ATL Server, IIS связывает вызов с библиотекой DLL расширения ISAPI. После получения этого запроса расширение ISAPI открывает и обрабатывает библиотеку DLL запрошенного веб-приложения или файл ответа сервера. Если запрошен файл ответа сервера, то вызывается тег замещения, обозначающий вызов функции из библиотеки DLL веб-приложения, и результаты работы вставляются в файл ответа сервера в месте расположения тега замещения. Комбинация результатов вызовов к DLL веб-приложения и содержимое файла ответа сервера возвращаются запрашивавшей стороне. Если DLL веб-приложения запрашивается напрямую, библиотека DLL расширения ISAPI выполняет соответствующий вызов (вызовы) и возвращает результаты в браузер.

На рисунке 4.1 приведен обзор архитектуры ATL Server.


Рис. 4.1.  Обзор архитектуры ATL Server

Так как библиотека DLL расширения ISAPI может располагаться на несущем сервере не в корневом веб-каталоге, то IIS нужно знать, какие действия выполнять с файлом расширения ISAPI и файлами, связанными с библиотекой DLL расширения ISAPI (файлами ответа сервера и DLL веб-приложения). Чтобы сравнить программное решение для интернета, требующее текстовых файлов для обработки расширением ISAPI, мы будем использовать технологию ASP и противопоставим ее механизму IIS для связи файлов и расширения ISAPI.
IIS известно, как обрабатывать файлы ASP, поскольку имена файлов, оканчивающиеся на .asp обрабатываются с помощью расширения ISAPI с именем ASP.DLL.

Код внутри ASP.DLL открывает связанный ASP-файл и интерпретирует код в тегах ASP. Веб-формы и веб-службы, работающие с файлами .aspx и .asmx, используют такой же механизм, только они применяют технологию .NET вместо ASP.DLL для интерпретации кода и тегов, содержащихся в соответствующих файлах.

ATL Server с помощью библиотек DLL расширения ISAPI интерпретирует код, включенный в теги файла ответа сервера, и вызовы функций, определенные тегами замещения в библиотеке DLL веб-приложения. При создании веб-приложения с использованием файлов ASP разработчик ни в коем случае не станет перекомпилировать ASP.DLL таким образом, чтобы она содержала только код для обработки функций ASP. ASP.DLL не изменяется от одного ASP-приложения к другому; по существу, именно за счет этого работает одна библиотека DLL расширения ISAPI. Имейте в виду, что ATL Server создает особый интерпретатор для строящегося программного решения, оптимизированный именно для этого решения. Он также является библиотекой DLL расширения ISAPI, которая входит в проект ATL Server. Разработчик имеет прекрасную возможность модифицировать ее в соответствии с требованиями конкретного приложения, а не использовать конфигурацию по умолчанию.

Для использования службами IIS библиотеки расширения ISAPI файлы ответа сервера и файлы библиотеки DLL приложения необходимо связать с соответствующей библиотекой расширения ISAPI, аналогично тому, как файлы с расширениями .asp связаны с библиотекой ASP.DLL или файлы с расширениями .aspx связаны с интерпретатором технологии .NET aspnet_isapi.dll. Расширение имен файлов ответов сервера .srf и расширение .dll DLL-библиотек веб-приложения должны быть связаны с соответствующей DLL-библиотекой расширения ISAPI.

Ниже показано, как можно связать расширения имен файлов с расширениями ISAPI.

  1. Откройте консоль MMC для IIS.
  2. Щелкните на значке папки Web Site (Веб-узел) в дереве папок, чтобы развернуть список экземпляров веб-сервера на сервере, затем щелкните на экземпляре веб-сайта, который необходимо настроить, для отображения его содержимого.
  3. Откройте окно свойств для любого веб-объекта или виртуального каталога и нажмите на кнопку Configuration (Настройка) во вкладке Home Directory (Домашний каталог) или Virtuel Directory (Виртуальный каталог) соответственно.


    Откроется апплет Application Configuration (Настройка приложения) (см. рис. 4.2).
  4. Свяжите файл и путь к нужной DLL- библиотеке расширения ISAPI на сайте. После этого IIS необходимо перезапустить.



Рис. 4.2.  Окно настройки приложения предназначено для связывания файлов с расширениями

Расположение DLL-библиотеки веб-приложения, используемой файлом ответа сервера, определяется в самом файле ответа сервера. Она должна находиться в корне виртуального каталога. Файл ответа сервера содержит тег обработчика, определяющий относительное расположение этой библиотеки. (Для получения более подробной информации о тегах обработчика обратитесь к разделу "Файлы ответа сервера".) Когда в IIS направляется HTTP-запрос на файлы ответа сервера или библиотеку DLL веб-приложения, IIS с помощью связей файлов определяет, где искать эту библиотеку для обработки и интерпретации запроса.

Ни одна из задействованных библиотек не является DLL-библиотекой модели компонентных объектов (COM), поэтому IIS и компоненты ATL Server для поиска нужных DLL-библиотек физически отыскивают их на узле по текущим файловым расположениям.

Многие из разработчиков знают, что расположение COM-объекта на узле определяется связыванием уникального идентификационного номера (CLSID) с путем к файлу DLL. Эта информация записывается в реестр Windows, и любое программное обеспечение, запрашивающее использование DLL-библиотеки COM- объекта, сможет работать с ней. Доступ к DLL с помощью ее физического нахождения и загрузки выглядит несколько устаревшим по сравнении с архитектурой, появившейся после технологии COM, но такое решение дает некоторые преимущества с точки зрения управления. Связи с файлами в IIS базируются на файловых расширениях. DLL-библиотека веб-приложения указывается посредством относительного пути. Перемещение файлов на другой сервер нарушает связи файлов IIS с DLL-библиотекой расширения ISAPI, но другие файлы перемещаются так, как если бы они являлись статическим содержимым, поскольку их расположение относительно друг друга контролируется.


Содержание раздела