ISAPI DLL: их разработка и использование.

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

Сайт от А до Б

/

Основы сайта

/

Интересные скрипты

/

Изучаем PHP

/

Как заработать на сайте

/

Раскрутка сайта

/

CMS


ISAPI DLL: их разработка и использование. 

Еще по теме:
  разработка и создание
  Анимационные картинки при разработке лого
  Проще ли разработать приложение Ajax по сравнению с традиционным веб-приложением?

Чаще всего для выполнения каких-либо операций на сервере используется интерфейс CGI и CGI-программы, либо CGI-скрипты. Компания Microsoft, как всегда, предложила свой вариант исполнения серверных программ, который называется стандарт ISAPI. И в первую очередь он предназначался для подключения к ведущему Web-серверу Microsoft - Internet Information Server. Программы, написанные по этому стандарту, представляют собой давно известные нам динамически загружаемые библиотеки DLL, которые вызываются Web-сервером, загружаются в память и становятся как бы частью этого Web-сервера, расширяя или изменяя его функциональность.

В ответ на вызов Microsoft компания Netscape разработала свой стандарт NSAPI для своего Web-сервера. Так что война броузеров теперь дополнилась войной серверов. Для программиста же нет принципиальной разницы под какой стандарт разрабатывать dll. Компилятор Delphi (а именно на разработку DLL в среде Delphi сделан акцент в этой статье) сам выполняет всю черновую работу за вас.

Откомпилированная dll помещается в тот же каталог скриптов (SCRIPTS или CGI-BIN) на Web-сервере, куда выкладываются обычно прочие серверные скрипты. Вызов на исполнение этой dll выглядит так же, как и вызов на исполнение любого другого серверного приложения/скрипта. Вот как, например, выглядит запрос на запуск некой программы format.dll:

http://www.microsoft.com/cgi-bin/format.dll?disk=c

Преимущества ISAPI - в скорости выполнения операций. Программа загружается всего один раз и остается в памяти до тех пор, пока ее не выгрузят насильно или пока не остановят Web-сервер. Поэтому ISAPI-dll работает быстрее, чем обычная CGI-программа (которая должна всякий раз загружаться и выгружаться) или скрипт (который сначала должен загружаться, потом обрабатываться интерпретатором, которому тоже нужно время загрузиться). Основные недостатки - трудности при отладке, незамеченная ошибка может привести к зависанию не только самой dll, но и Web-сервера, частью которого она является. Самый главный недостаток - непереносимость. Если Perl-скрипт может выполняться как на UNIX платформе, так и на Windows-платформе, то dll, сами понимаете, намертво привязана к Windows.

Впрочем некоторые из этих трудностей можно побороть.

Apache vs IIS

Как ни странно, но ISAPI-dll может работать не только под IIS (для которого и затевался весь сыр-бор), но и под бесплатным сервером Apache. Хочется сразу предупредить о глюке, с которым вы можете столкнуться при разработке ISAPI-dll в среде Delphi.

Дело в том, что при запуске вашей dll Apache вызывает главную функцию GetExtensionVersion и проверяет ее выполнение на True/False в ожидании, что ему вернется значение 1 или 0. А в Delphi значение True выражается не 1, а -1. В результате ваша ISAPI-dll, будет прекрасно работать под IIS, но ни за что не заработает под Apache, выдавая сообщение:

No such file or directory: ISAPI GetExtensionVersion() failed

Решение таково: вам надо взять исходные тексты Apache и внести в них маленькое изменение в файле mod_isapi.c:

Строку

if ((*isapi_version)(pVer) != TRUE) {
заменить на
if (!(*isapi_version)(pVer)) {

и заново скомпилировать Apache.

Не так все страшно, как кажется. Моих скромных навыков хватило, чтобы установить Visual C++ 6.0, открыть в нем проект, отыскать нужную строчку, перекомпилировать все и получить работающий Apache. Если это смог сделать я, сможете и вы. Если вы вообще не разбираетесь в С, попросите сделать это знакомого программиста.


Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua, http://www.webmascon.com/topics/technologies/2.asp
Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).

© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100