Удаленный клиент с использованием ActiveForm

Как было сказано выше, наличие "тонкого" клиента не только снижает требования к ресурсам рабочей станции, но и упрощает конфигурацию программного обеспечения для них (для работы такого клиента требуется лишь файл dbclient.dll размером 156 Кб из комплекта поставки Delphi 3.0 Client/Server Suite). Следствием этого является возможность осуществлять поставку таких приложений не путем создания обычного дистрибутива, а через intranet (или Internet, если говорить об информационной системе предприятия с удаленными филиалами), используя Web-сервер в качестве источника очередной версии приложения и Web-броузер в качестве средства его установки. При этом существует возможность выполнения такого приложения (если оформить его не как исполняемый файл, а как компонент ActiveX) непосредственно в броузере, используя тег <OBJECT>, поддерживаемый MS Internet Explorer 3.0 и 4.0.

Для распространения такого "тонкого" клиента следует иметь в сети какой-нибудь Web-сервер (например, Personal Web Server для Windows 95 или Internet Information Server для Windows NT).

Для создания "тонкого" клиента в виде ActiveX следует в репозитарии объектов Delphi выбрать страницу ActiveX и пикторамму ActiveForm.

Рис.9. Выбор ActiveForm из репозитория объектов

Рис.10. Создание нового компонента ActiveX для показа в броузере

После этого автоматически будет предложено создать ActiveX Library (файл с расширением OCX). Помимо главной формы приложения, на которой располагаются интерфейсные элементы (подобные, например, тем, что были использованы в предыдущем примере), следует создать модуль данных с необходимыми компонентами для доступа к данным..

Рис.11. "Тонкий" клиент, реализованный как ActiveForm

Отметим, что обработчик события для кнопки "О программе" отличается от стандартного: в модуле, свзанном с ActiveForm, имеется набор сгенерированных автоматически процедур и функций (можно найти их в исходном тексте соответствующего модуля), одну из которых мы и использовали.

	procedure TMyAXF.Button1Click(Sender:TObject);
	begin
	AboutBox;
	end;

Как показывает практика, в подобных формах можно использовать почти все интерфейсные элементы, содержащиеся в палитре компонентов Delphi, за исключением главного меню. Возможна также генерация дополнительных форм (отображаемых уже не внутри броузера, а отдельно от него).

После того как форма спроектирована, следует установить опции для переноса будущего ActiveX на Web-сервер. Для этой цели следует выбрать пункт меню Project /Web Deployment Options... и заполнить соответствующую диалоговую панель, указав в строке Target Dir каталог, в который следует переносить файлы, распространяемые через Internet, с точки зрения администратора Web-сервера, а в качестве URL - этот же каталог с точки зрения пользователя броузера, соединившегося с Web-сервером (как правило, имена, видимые пользователю извне Web-сервера, и администратору сервера, не совпадают). В строке

HTML dir следует указать, где лежит файл со ссылкой на ActiveForm.

Рис.12. Установка параметров поставки ActiveX через Internet

При распространении библиотек OCX через Internet рекомендуется использовать сжатие их в файлы с расширением *.cab, так как это уменьшает время их загрузки.

Если для функционирования клиентского приложения требуется файл dbclient.dll (или какие-либо другие файлы), следует указать их в закладке Additional Files.

Опция Include File Version Number необходима для того, чтобы своевременно обновлять версию созданного ActiveX, если произошло ее обновление на сервере.

Для переноса созданного OCX-файла на Web-сервер следует выбрать опцию Project /Web Deploy. При этом будет создан соответствующий CAB-файл и HTML-страница с минимальным набором тегов. В дальнейшем можно отредактировать полученную страницу.

После создания и переноса CAB-файла и Web-страницы на Web-сервер можно открыть эту страницу в броузере.

Следует обратить особое внимание на то, что по умолчанию уровень безопасности броузера является минимальным, а в этом случае полученный по сети элемент ActiveX будет просто проигнорирован броузером без выдачи какого бы то ни было сообщения. Если же выбран средний или минимальный уровень безопасности броузера, полученный по сети компонент будет зарегистрирован в реестре Windows (в этом можно убедиться, попытавшись найти имя формы в редакторе реестра), а соответствующий файл OCX хранится в каталоге для кэширования сгружаемых компонентов

Рис.13. Сведения о зарегистрированной библиотеке OCX в редакторе реестра

После открытия форма будет видна в броузере (рис.14). Можно убедиться, что все ее интерфейсные элементы работают так же, как и интерфейсные элементы в обычном приложении.

Рис.14. Web-страница с элементом ActiveX - "тонким" клиентом

Технические характеристики ПК, использованных для данного примера, приведены в табл. 3 (локальный вариант) и табл.4 (сетевой вариант).

Таблица 3. Технические характеристики использованных ПК и ПО (локальный вариант трехзвенной системы с ActiveForm в качестве "тонкого" клиента)

Компоненты системыПОПК
Сервер БДPersonal Oracle for Windows 95 (90-дневная trial-версия)Pentium-120/32 MB RAM
Сервер приложенийСервер приложений, созданный перед этим в первом примереPentium-120/32 MB RAM (это тот же самый ПК, на котором запущен сервер БД)
Web-серверMicrosoft Personal Web Server for Windows 95

- ''-

Web-броузерMicrosoft Internet Explorer 3.01 for Windows 95

-''-

Таблица 4. Технические характеристики использованных ПК и ПО (сетевой вариант трехзвенной системы с ActiveForm в качестве "тонкого" клиента)

Компоненты распределенной системыПОПК
Сервер БДWindows NT Server 4.0 + Oracle Workgroup Server 7.2 for Windows NT (90-дневная trial-версия)Pentium-133/32 MB RAM
Сервер приложенийWindows NT Server 4.0Pentium-133/32 MB RAM (это тот же самый ПК, на котором запущен сервер БД)
КлиентыWindows 95Pentium-120/16 MB RAM

Созданный нами сервер приложений является клиентом серверной СУБД. Отметим, что подобные приложения можно создавать и с локальными БД, обеспечивая их частичную обработку на сервере приложений.

Несколько слов о реализации сервера как многопоточного приложения. Если при создании сервера выбрана опция Single Instanse, каждый клиент на сервере может запустить свой процесс. Если же при создании сервера была выбрана опция Multiple Instanse, то каждый клиент может в рамках единого процесса создавать свой поток (то есть создавать свой экземпляр удаленного модуля данных). В этом случае рекомендуется использовать при создании сервера компонент TSession со значением AutoSessionName, равным True, так, чтобы потоки, созданные разными клиентами, не использовали одну и ту же сессию и не мешали друг другу при сбоях.

В заключение хотелось бы отметить некоторые особенности Delphi 3.01, связанные с реализацией многозвенных приложений. В палитре компонентов этой версии продукта имеется новый компонент TMidasConnection, который может быть использован вместо TRemoteServer. Если TRemoteServer предназначен главным образом для доступа к серверам приложений посредством DCOM, TMidasConnection обладает свойством ConnectType, позволяющим определить, каким образом осуществляется соединение - посредством DCOM, сокетов TCP/IP или OLEnterprise.

Еще одной приятной особенностью новой версии является автоматическая установка параметров HTML-тега <OBJECT> так, чтобы размер изображения ActiveX в броузере соответствовал размерам формы (в прежней версии требовалась ручная правка генерируемой Web-страницы).

Автор выражает признательность Сергею Орлику за некоторые полезные идеи, в частности, идею использования ActiveForm для создания "тонкого" клиента, а также Андрею Брындину (АзовИмпекс) за идею создания многопоточного сервера.

Последнее обновление - 3 апреля 1998

Назад | Содержание