(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Серверное программирование в Delphi (документация)

Источник: codingclub

Просматривая содержимое какого-нибудь сайта, ты загружаешь в свой компьютер статические и динамические 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 - читай комментарии внутри файла. А теперь давай напишем простенькое веб-приложение.

Графический счетчик обращений

Почему я выбрал такой простой пример? Цель моей статьи - показать возможности Delphi, а дальше уже на твое усмотрение. Итак, запускай Delphi и лезь в New -> Other -> Web Server Application. Далее появится диалоговое окно, в котором ты сможешь выбрать тип приложения (выбирай CGI). Перед тобой появилось окошко компонента WebModule1. Для построения приложения тебе придется редактировать Actions этого компонента. Добавь новый Action, нажав на кнопку Add new в диалоговом окне Editing Webmodule1.Actions. После этого создай обработчик события OnAction и напиши туда код. Поясню, мы создаем не многофункциональное приложение, а простой счетчик посещаемости, поэтому никакие другие свойства компонента редактировать не надо, а вот для более сложных приложений понадобится редактирование поля PathInfo для каждого нового Action′а. Думаю, ты понимаешь, зачем это нужно. А теперь давай разберемся с программой. Только сначала отредактируй раздел uses:
uses Windows, Graphics, Jpeg, ExtCtrls, SysUtils, Classes, HTTPApp;
Сам код писать не буду - там все очень просто. Расскажу лишь, как это работает. Существует два метода написания графических счетчиков: первый заключается в рисовании картинок с цифрами от 0 до 9 и последующей комбинации из них нужного числа. Второй (мы будем использовать его) - рисование в памяти растровой картинки с выводом числа прямо на ней. Как мы этого добьемся? Для начала создаем растровое изображение (компонент Image), а для рисования на нем используем стандартные методы класса TCanvas. Далее мы подключаем это изображение к объекту класса TJpegImage, чтобы получить изображение в формате jpeg. После этого можно сохранить полученные данные в поток и вернуть их клиенту. Механизм же реализации счетчика еще проще: при обращении клиента к программе осуществляется проверка на наличие лог-файла с числом посещений. Если файл существует, то программа просто добавляет единицу и перезаписывает файл, если же его нет, то в файл пишется единица (так как мы все же обратились к странице один раз). А дальше осуществляется подготовка изображения и отправка его клиенту. За пересылку изображения клиенту отвечают три выражения:
Response.ContentType := ′image/jpeg′; - задает тип содержимого ответа;
Response.ContentStream := Stream; - присваивает поток свойству ContentStream;
Response.SendResponse; - отправляет ответ клиенту.
Теперь для проверки работоспособности приложения ты можешь обратиться к нему так: www.somehost.ru/cgi-bin/Project1, или вставить в нужную тебе страницу тег <img src="путь_к_скрипту">.

Заключение

И последнее. При написании серверных приложений каждый сталкивался с проблемой их отладки. Но у тех, кто использует Delphi таких проблем больше не будет: начиная с 6 версии появился встроенный отладчик Web App Debugger. Теперь у тебя есть начальные знания, необходимые для написания серверного приложения на Delphi.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Micro Focus/Borland » [2]
Написать редактору 
 Рекомендовать » Дата публикации: 15.01.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ABBYY Lingvo x6 Многоязычная Домашняя версия, электронный ключ
ESET NOD32 Антивирус - продление лицензии на 2 года на 3ПК
VMware Workstation 14 Player for Linux and Windows, ESD
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER LICENSE + SW SUBSCRIPTION & SUPPORT 12 MONTHS
Allround Automation Direct Oracle Access Standard license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Каждый день новые драйверы для вашего компьютера!
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы на заказ профессионально (2944)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Подключение JavaScript (305)
Всем привет! Я подключаю JavaScript нижеприведенным образом. Код: <script...
 
Разработка устройств на микроконтроллерах (1)
Профессиональный программист. Основная специализация: МИКРОКОНТРОЛЛЕРЫ, АССЕМБЛЕР для любых...
 
Как восстановить рабочий стол? Помогите срочно надо! (3)
Windows 7 максимальная. В учетной записи сменила пароль и выключила комп, после включения...
 
Пять возможностей Windows, о которых вы могли не знать (5)
пыщпыщ
 
 
 



    
rambler's top100 Rambler's Top100