Webmasterpro.com.ua - первый украинский сайт о поисковых системах. Оптимизация сайта в поисковиках, поисковая раскрутка. Хостинг

Реклама на сайте

WebmasterPro рекомендует:
Платная оптимизация
Создание сайтов
Обмен ссылками
 
Общение на WebmasterPro
Яндекс, Рамблер, Апорт
Google и другие
Общие вопросы поисковых систем
Продвижение сайта
Покритикуем Ваш сайт?
HTML, CSS, JavaScript
Вопросы хостинга
Хостинг
Платный хостинг
Бесплатный хостинг

Регистрация доменов

Статьи
Яндекс
Google
Все поисковые системы
Баннерная реклама
Общие вопросы рекламы
Реклама в интернет
Маркетинг в интернет
Website management
Email-маркетинг
Почтовые рассылки
Спам и борьба с ним
Разработка сайта
Веб-дизайн
Usability
Каскадные таблицы стилей
HTML
Базы данных
Таблицы
MySQL
CGI
xDSL
Партнерские программы
Электронная коммерция
Выбор хостинга
Доменные имена
Провайдеры
Сервера
А также
Каталог сайтов
Партнерские программы
Платный хостинг
Регистрация доменов
Платный хостинг


 Хотите, чтобы Ваш сайт покритиковали? - добро пожаловать на форум WebmasterPro!

Чем примечателен форум? Здесь Вы можете:
- обсудить вопросы продвижения сайта в поисковых системах: разделы Яндекс... и Google...;
- позволить другим покритиковать Ваш сайт - раздел критика сайтов;
- найти или предложить работу для вебмастера, а также обсудить потенциал бизнеса в интернет
- просто поговорить с хорошими людьми :-)

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

Дата публикации: 15/07/2003
Категория: Веб-сервера
Версия для печати

Автор - Александр Качанов сайт Webmascon

Чаще всего для выполнения каких-либо операций на сервере используется интерфейс 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. Если это смог сделать я, сможете и вы. Если вы вообще не разбираетесь в С, попросите сделать это знакомого программиста.



Статьи по теме:

  страницы: 1


WebmasterPro.com.ua - интернет-маркетинг и реклама. Поисковые системы. Хостинг, партнерские программы, разработка сайта

 

Новости, статьи и пресс-релизы присылайте на news@webmasterpro.com.ua 
При перепечатке материалов ссылка на WebmasterPro обязательна

Rambler's Top100

Rating@Mail.ru


Copyright © 1999-2003 webmaster@webmasterpro.com.ua
Система публикаций Sanitarium WebLoG