Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 23:

Доступ к Microsoft SQL Server 2000 из Internet

< Лекция 22 || Лекция 23: 123 || Лекция 24 >

Использование ISAPI для доступа к SQL Server

ISAPI – это набор вызовов функций, предназначенных для того, чтобы снабдить разработчиков Internet-приложений мощным методом расширения функциональных возможностей IIS. Приложения ISAPI показывают очень высокую производительность и позволяет осуществлять низкоуровневое управление. Фактически приложения ISAPI могут работать лучше других существующих Web-приложений для IIS. Кроме того, используя ISAPI, разработчик получает доступ ко всему массиву функций Win32 API.

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

Расширения ISAPI

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

Для обращения к расширению ISAPI используется виртуальный адрес .dll-файла в URL. Пример: http://www.mydomain.com/SampleISAPI.dll.

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

Фильтры ISAPI

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

Фильтры ISAPI являются довольно мощным средством и могут быть использованы для реализации сжатия или шифрования данных, нестандартной аутентификации, регистрации и анализа Web-трафика и даже сценарных механизмов на сервере (server-side scripting engines). Вы можете создать фильтр ISAPI, который просматривает каждый набор Web-страниц, который должен быть доставлен клиенту, ищет специальные теги разметки и действует в соответствии с этими инструкциями подобно тому, как это делает ASP-страница.

Способность проверки и модифицирования каждого входного и выходного потока данных делает фильтры ISAPI мощным и гибким средством. Однако слишком интенсивное использование фильтров ISAPI приводит к резкому снижению общей производительности и масштабируемости сайта. Например, при фильтрации каждой входной и выходной страницы это может стать слишком большой нагрузкой, чтобы с ней могла справляться система, поскольку это требует передачи большого объема дополнительной информации. Следует уделять огромное внимание тому, чтобы свести к минимуму объем работы, выполняемой фильтрами ISAPI. Например, в заказной схеме шифрования фильтр должен выполнять шифрование, а IIS должна выполнять обмен данными с клиентом. Это позволяет снизить количество задач, которые должен выполнять данный фильтр ISAPI.

Ограничения ISAPI

Технология ISAPI может обеспечивать наиболее высокую производительность, но она имеет некоторые недостатки. Для разработки расширений и фильтров ISAPI требуется больше времени, чем для разработки сценарных страниц, поскольку расширения и фильтры ISAPI обычно пишутся на C или C++, и по этой же причине возрастают трудности сопровождения. Для перехода на расширение или фильтр ISAPI требуется повторная компиляция всего приложения, а не просто замена какого-либо одного файла. Хотя расширения и фильтры ISAPI обычно работают быстрее, чем их сценарные аналоги на сервере, они не дают абсолютной гарантии полной масштабируемости. И наконец, определенные абстракции программирования, которые считают очевидными большинство разработчиков сценариев для сервера (в особенности сеансовый объект – session object), почему-то отсутствуют в ISAPI-программировании. ISAPI-программирование происходит на существенно более низком уровне, чем создание сценариев на сервере.

< Лекция 22 || Лекция 23: 123 || Лекция 24 >