Учебная работа. Реферат: Технология ISAPI
Вначале ISAPI распространялся посреди разрабов CGI как кандидатура программкам CGI либо как обновление исполняемого файла CGI. Почти все исполняемые файлы CGI написаны на C++ либо C, потому Интеграция имеющегося веб-приложения CGI не весьма сложна. Преобразование Интернет-приложения CGI для использования ISAPI наращивает производительность Интернет-приложения. CGI при любом HTTP-запросе делает новейший процесс, что занимает много ресурсов несущего сервера. Расширения ISAPI загружаются в место процесса IIS, потому узлу не необходимо создавать новейший процесс при любом HTTP-запросе. Так как Windows загружает динамически подключаемую библиотеку в место памяти один раз при первом вызове функции в DLL и хранит ее там неопределенный просвет времени, расширение ISAPI остается загруженным и не удаляется, до того времени пока IIS не будет выключен либо не будет выгружен экземпляр либо виртуальная память. Таковым образом, компания Microsoft дает программерам основание употреблять ISAPI заместо CGI и просто обновлять ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств), сделанное с помощью CGI.
ISAPI рекомендуется для программистов, создающих (либо уже создавших) приложение на языке C++, созданное для реализации на рынке ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств). Если принципиальным фактором является производительность, и на разработку выделяется больше времени, чем на создание обыденного сценария для веба, разглядите вариант использования ISAPI. Не считая всего остального, ISAPI делает на несущем узле некие задачки, которые недозволено выполнить с помощью остальных технологий. Программное обеспечение ISAPI сотворено таковым образом, что при его выполнении остальные Интернет-приложения, написанные на языках сценариев с внедрением остальных расширений ISAPI (к примеру, .NET Framework либо ASP.DLL), не разглядывают задачки, выполняемые расширением ISAPI.
К недочетам рассматриваемой технологии относится сложность ISAPI в работе и в отладке. Отладка кода в встроенной среде разработки (Integrated Design Environment, IDE) Visual Studio .NET достаточно сложна, и, так как IIS представляет собой процесс с несколькими нитями, результаты отладки могут быть непредсказуемыми. Мельчайшая ошибка в приложении ISAPI чертовски сказывается на производительности IIS. По сопоставлению со иными средами разработки ISAPI очень чувствительна к ошибкам при построении Интернет-приложения.
Не считая всего остального, код ISAPI создается при помощи неконтролируемого кода C++. Новейшие способности, предлагаемые Visual Studio .NET для управляемого кода C++ в технологии .NET Framework, недозволено употреблять в проекте ISAPI.
Примечание. Если программка создается при помощи контролируемого кода, то в этом случае реализуется разработка.NET Framework. Эта разработка употребляется языками C# и Visual Basic. термин «управляемый» значит, что разработка .NET Framework контролирует чистку памяти, отведение памяти и остальные процессы управления ресурсами низкого уровня. программка на C++ не сумеет работать с технологией .NET Framework, если не используются Managed Extensions (Управляемые расширения) для C++. Управляемый C++ значит внедрение технологии .NET Framework и контролируемых расширений C++. Код C++, сделанный без использования контролируемых расширений C++, является неконтролируемым кодом C++.
Обзор архитектуры ISAPI
Приложения ISAPI представляют собой библиотеки DLL, впрямую взаимодействующие с IIS API. Программное обеспечение ISAPI – это расширение либо фильтр. Расширения ISAPI являются библиотеками DLL, вызываемыми средством квалифицированного запроса в IIS. Фильтры ISAPI вызываются независимо от остальных запросов IIS. Запросы HTTP передаются впрямую расширению ISAPI при помощи ссылки URL либо данных, отправляемых из формы html. Расширение ISAPI может вызываться косвенно средством связывания файла с определенным расширением ISAPI в IIS. При установке связей файлов производятся деяния, подобные ассоциированию файлов ответа сервера (SRF) с определенным расширением ISAPI в ATL Server (см. лекцию 4). Можно настроить реагирование фильтров ISAPI на запросы согласно приоритету; это различает их от остальных фильтров, загружаемых в IIS. Фильтры употребляются в специализированных приложениях, связанных с IIS, и обычно делают последующие задачки:
шифрование;
ведение журналов;
аутентификация;
сжатие данных.
Расширения ISAPI – более нередкий метод внедрения ISAPI. Фильтры ISAPI достаточно сложны в разработке, и сфера их использования ограничена. Эта тема выходит за рамки книжки и рассматриваться не будет.
ISAPI и NSAPI
Ведущие поставщики, такие как Netscape, BorlandInternational, Microsoft и Sun, избавляют недочеты, присущие спецификации CGI, используя заместо нее собственные API-интерфейсы. Netscape дает NetscapeServerAPI, компания Microsoft разрабатывает технологию activeX и интерфейсы InternetServerAPI (ISAPI), которые ведут взаимодействие с совместимыми OLE-серверами для выполнения распределенных вычислений. Sun занимается созданием интерфейса JDBC, который дозволит устанавливать конкретную связь меж Web-страницами, написанными на языке Java, и базой данных. Некие API-интерфейсы из набора JDBC уже предлагаются юзерам, но большая их часть находится в стадии разработки.
Microsoft выпустила Web- InternetInformationServer (IIS), поддерживающий ISAPI, который заходит в состав WindowsNT и тесновато интегрирован с СУБД SQLServer. запрос передается серверу IIS, который употребляет ISAPI для извлечения данных из БД и передачи их юзеру в формате html. Представители Microsoft считают, что такое решение намного проще в использовании, чем CGI, и работает на порядок резвее.
Oracle дает ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) WebServer, который также употребляет API-интерфейсы Oracle. С его помощью можно разрабатывать приложения на языках PL/SQL, C и C++, которые исполняют запросы к базе данных, написанные на языке PL/SQL. В предстоящем компания хочет дополнить WebServer поддержкой спецификаций JDBC.
Не считая риска, связанного с защитой данных, CGI присущи ограниченные способности масштабирования и низкое быстродействие. Любая реализация CGI-сценария запускается в собственном своем адресном пространстве, а не в адресном пространстве Web-сервера. Для 32-разрядных систем Windows это значит, что каждое воззвание к CGI-сценарию просит пуска приложения WinExec, загрузки с диска новейшей копии исполняемой программки и, может быть, новейшей копии сценария, также сотворения новейшего адресного места с новеньким действием и новейшей структурой указателей. Нередко сам сценарий делает весьма не достаточно, потому непродуктивные Издержки на создание процесса составляют огромную часть времени выполнения сценария CGI.
Один из методов сделать лучше эту ситуацию — сделать расширение Web-сервера, которое запускается как динамическая библиотека DLL и делает обработку всякого вызова сервера по отдельной структуре. Это равнозначно созданию структуры указателей в адресном пространстве Web-сервера для всякого клиентского запроса, что существенно проще, чем создание процесса для всякого клиентского запроса.
Два ведущих производителя Web-серверов, Netscape и Microsoft, выпустили свои собственные запатентованные схемы расширения Web-сервера, основанные на DLL. интерфейс NSAPI компании Netscape работает на платформе unix, которая поддерживает вместе применяемые объекты. интерфейс ISAPI компании Microsoft не будет работать в Unix, так как сервер IIS данной нам же компании запускается лишь на системе WindowsNTServer.
DLL-библиотеки ISAPI имеют две нужные точки входа — GetExtensionVersion и HttpExtensionProc. 1-ый вызов дозволяет серверу узнавать номера версий расширений DLL и строчку описания при инициализации, а 2-ой эквивалентен процедуре main расширения. информация в HttpExtensionProc передается с помощью единственного параметра и указателя управляющего блока расширения. структура этого блока несет главную информацию, которая обязана быть ориентирована в переменные среды CGI-программы.
ISAPI может последующее:
запросить доп информацию по имени с помощью вызова GetServerVariable;
считать информацию из тела HTTP- запроса Web-клиента с помощью вызова ReadClient;
отправить информацию HTTP-клиенту с помощью вызова WriteClient;
вернуть серверу информацию о расположении, переадресации и состоянии процесса с помощью вызова ServerSupportFunction.
Доп информацию по ISAPI вы сможете отыскать в IISSDK компании Microsoft по адресу: http://www.microsoft.com/intdev/.
Отдать резюме для NSAPI нелегко. Будучи аналогичным ISAPI, интерфейс NSAPI все таки является наиболее сложным и теснее привязан к конфигурации сервера, хотя и наиболее гибок. Конфигурация каждой функции NSAPI обязана быть задана в объектной базе данных конфигурации Netsite. Блоки характеристик NSAPI базируются на парах name-value, что почти во всем аналогично переменным Web-форм. Доп информацию по NSAPI можно отыскать по адресу: HTTP://www.netscape.com/newsref/std/server_api.html.
Когда любой комп в мире в конце концов получит собственный Web-, возникнет увлекательный потребительский Рынок для расширений серверов. Интересно, найдутся ли желающие провести опрос, чтоб получить возможность предсказать, когда же это произойдет?
]]>