Серверное программирование в Delphi

Dr.Zlobyus

Xakep, номер #056, стр. 056-074-1


(zlobyus@e-mail.ru)

Просматривая содержимое какого-нибудь сайта, ты загружаешь в свой компьютер статические и динамические HTML-страницы. Если с первыми все понятно, то с последними дело обстоит несколько иначе. Динамические веб-сервера могут быть построены на разных технологиях: CGI (Perl, C/C++), PHP, ISAPI, ASP. Сейчас самые распространенные - это CGI и PHP (хотя PHP-скрипты могут работать и через CGI-интерфейс). И так уж сложилось, что CGI ассоциируется именно с перлом, ведь на этом языке написано бесчисленное множество супернавороченных скриптов. Но на самом деле это может быть практически любой язык, в том числе C/C++ и даже Delphi. О последнем как раз и пойдет разговор в нашей сегодняшней статье.

Протоколы программирования

CGI (Common Gateway Interface) - это стандартный протокол связи между браузером и веб-сервером. Подробнее о нем ты можешь узнать из предыдущих номеров Х.

Вместо CGI можно воспользоваться совершенно другим подходом (путем обращения к интерфейсам API сервера), таким как ISAPI (Internet Server API), разработанным Microsoft, и NSAPI (Netscape Server API). ISAPI позволяет писать DLL, загружаемые в адресное пространство сервера и сохраняемые там какое-то время. Загрузив DLL, сервер получает возможность использовать для обработки каждого запроса отдельный поток. То есть сервер получает запрос, грузит DLL (если она еще не загружена!) и выполняет соответствующий код, результат которого и отсылается клиенту. А так как служебный обмен данными на сервере осуществляется через память, такие приложения работают на порядок быстрее, чем аналогичные CGI. Apache сервер тоже позволяет расширить свои возможности при помощи CGI, но он и поддерживает специальные библиотеки расширения (модули).

Как это в Delphi

Существует множество языков программирования, поддерживающих разработку серверных приложений. И вовсе не обязательно изучать новый язык только из-за того, что, по мнению некоторых, он имеет преимущество перед тем, к которому ты уже привык, и на котором писать код тебе значительно проще. Так что, если ты предпочел остальным языкам программирования именно Delphi, этот материал для тебя.

Я не зря перечислил все виды серверного программирования - все они поддерживаются Delphi, и их разработка в его среде приятна и несложна. Давай рассмотрим подробнее.

Конечно, разрабатывать CGI и другие типы серверных приложений в Дельфи можно по-разному, но я предлагаю использовать технологию WebBroker, поддерживающую иерархию классов VCL и CLX, что сильно упрощает разработку веб-приложений, а также специальный тип модулей данных (WebModule). Самое главное, что компонент WebModule является общим для всех типов приложений! Т.е. никаких изменений в коде, будь то ISAPI-, или CGI-проект, ты не найдешь! Единственное НО: если разрабатываешь проекты ISAPI, то код в разных версиях Дельфи будет отличаться, а если решил писать модули Apache, то их придется установить на сервер. Для этого помести свой модуль в папку modules сервера и отредактируй файл httpd.conf - читай комментарии внутри файла.

Содержание  Вперед на стр. 056-074-2