Введение в  IntraWEB.

 

 

Abstract. Article deals with IntraWeb AtoZed Software: using its Stand Alone mode and distributing.

Command line parameters and some restrictions of  IntraWeb 5.0 version are discussed.

 

Аннотация. Рассматривается продукт IntraWeb от AtoZed Software: принцип работы в режиме StandAlone Application и методы размещения приложений. Обсуждаются параметры командной строки, некоторые ограничения версии 5.0.

 

 

"Ваше слово, товарищ браузер"[1].

 

 

В Delphi 7 Studio© появилось IntraWEB - новое средство RAD для Интернета, разработанное AtoZedSoftware© (точнее Nevrona Designs©, которая впоследствии продала этот продукт, развив его до версии 3.0 включительно). IntraWeb  представляет из себя набор VCL-компонент, расширяющих возможности Delphi-разработчика при проектировании приложений, работающих в Сети с использованием WEB-браузеров на клиентских рабочих местах. Создание такого рода приложений напоминает теперь разработку стандартного RAD-проекта: создание формы (WEB-формы), добавление компонент, запись кода для обработчиков событий и так далее. IntraWeb сильно отличается от того, что до сих пор использовалось в Delphi для WEB-разработки. Нет необходимости явно применять HTML-редакторы (хотя возможность совместной работы WEB-дизайнера и программиста существует и здесь), задавать обработчики на JavaScript, как это делается, например, в WEBSnap-приложениях. IntraWeb-приложения содержат обыкновенный Pascal-код, но выполняются в окне WEB-браузера. Все преобразования в код, "понятный" WEB-браузеру, производит IntraWeb.

На сегодняшний день документация по IntraWEB версии 5.0 выгладит достаточно разрозненно - сам продукт проходит бета-тестирование. Однако общую информацию для того, чтобы начать экспериментировать с продуктом, можно получить из источников в Интернете[2] [3]. В данной статье основное внимание уделено процессу размещения IntraWEB-приложений.

 

 

1.     Как работает IntraWeb.

 

            Для понимания того, что же представляет из себя IntraWeb рассмотрим создание классического демонстрационного приложения “Hello, world”.  В среде Delphi создадим новое приложение, выбрав File|New|Other. В репозитарии объектов на закладке New Items|IntraWeb выберем Stand Alone Application.

 

 

 

Необычно то, что Delphi сразу предлагает выбрать директорию для сохранения проекта, причем появляющийся на экране диалог не является стандартным – в нем нет возможности задать директорию, которая пока еще не существует на диске. Все имена файлов проекта задаются по умолчанию так, что при создании нового проекта в той же директории есть опасность случайной перезаписи уже имеющихся pas-файлов. Руководство пользователя IntraWeb[4] настоятельно рекомендует переименовывать файлы всякий раз после создания нового проекта.

            После сохранения проекта в выбранную директорию,  в ней можно обнаружить следующие файлы:

  1. iwproject.dpr – собственно файл проекта.
  2. iwunit1.dfm и .pas – модуль проекта.
  3. ServerController.pas и ServerController.dfm – контроллер сервера, обрабатывающий состояние и события приложения вместо возможно установленного на компьютере WEB-сервера. При наличии этого контроллера, отладка приложения типа Stand Alone не требует установки и запуска IIS или других WEB-серверов на вашем компьютере.

 

Заметим, что во избежание конфликтов IntraWEB-сервер не должен использовать порт, задействованный для работы с HTTP в основном сервере вашего копьютера. Как правило, это порт 80. IntraWeb-сервер можно использовать и в качестве основного, если основой WEB-сайта является IW-приложение. Во всех других случаях такое использование не рекомендуется. О конфигурации портов в IntraWEB и использовании его сервера как основного пойдет речь ниже.

 

На форму IWUnit1 с палитры IW-компонентов Standard поместим метку IWLabel.

 

 

 

 

 

 

Перейдем к Object Inspector и изменим текст метки (свойство Caption) на Hello, world.

Дизайн нашего приложения завершен. Запустим его на выполнение и посмотрим, что получилось.

 

 

 

Рис. 1. Приложение Hello, world, запущенное на выполнение.

 

При запуске Stand Alone-приложения загружается IntraWeb-сервер, выполняющий запросы клиентов и следящий за состояниями сессий. Для выполнения приложения под его управлением нажмите F9 или выберите позицию меню Run|Execute. При этом запустится новая сессия и окно WEB-браузера, отображающее разработанную форму как HTML-страницу. Разработка приложения завершена.

 

2.     Размещение приложения.

 

Если нет желания отказываться от использования IIS, IntraWeb-приложение может запускаться как ISAPI-расширение или Apache DSO. Однако в этом случае приложение должно работать в режиме Page Mode совместно с WebSnap, например. Иногда возникают  проблемы с отладкой, так как исправление ошибки в приложении и тестирование результата, как правило, требует перезапуска сервера. Здесь мы подробно рассмотрим два других варианта размещения: как exe-приложение и как сервис операционной системы.

Уже в такой форме, как EXE-файл, Stand alone IntraWeb-приложение может использоваться и выполнять функции сервера. Мешает его окно на экране? Можно запускать его в минимизированном виде с командной строкой /minimize.

Непосредственный запуск окна браузера при отладке в среде Delphi возможен с использованием командной строки /LaunchBrowser

 

Сервер отображает число активных сессий, устаревшие сессии, HTTP-запросы, а также ведет журнал ошибок - файл с именем приложения и расширением ERR.

 

Рассмотрим подробнее более удобный способ - размещение IntraWeb-приложения на платформе Windows 2000 c использованием служб этой операционной системы. Для этого IntraWeb-сервер необходимо настроить. Прежде, чем начать процесс настройки, давайте рассмотрим параметры сервера, отображенные  на рис.1.

 

Сервер прослушивает HTTP-порт 1057. Откуда взялось это значение? Чтоб разобраться в этом, зайдем в Delphi-проект и загрузим в IDE форму сервера View|Units| ServerController. Свойство контроллера Port равно 0, поэтому система при запуске приложения выбирает любой порт случайным образом. При задании определенного значения порта в процессе разработки, сервер будет прослушивать именно этот номер порта. Прослушивание порта осуществляется посредством сокетного соединения, в котором участвует комбинация IP-адреса и номера порта. Так что, нужно будет указать еще и IP-адрес, установленный в вашей системе. Укажем в свойстве BoundIP значение 10.51.8.81 - сконфигурированный в нашей тестовой системе IP адрес, а в значении Port 1001. Кроме того, изменим значение свойства StartCMD, указав, например, Start. Этот параметр будет задаваться в URL на клиентском компьютере как стартовый для запуска службы.

Запустим задачу на выполнение  и убедимся, что параметры порта IntraWEB-сервера и URL страницы изменились в окне сервера My IntraWeb Application Server соответствующим образом.

 

Если Вы используете тестовую версию IntraWEB,например, для версии Delphi 7 Professional, задавать номер порта нельзя. Таково ограничение для Демо-версий. Кроме того, задание номера порта для версий продукта ниже 5-й осуществляется в Delphi IDE добавлением соответствующего значения в перегружаемую процедуру IWRun, обращение к которой происходит в файле проекта *.dpr.

 

Установим теперь разработанное приложение на серверном компьютере как службу Windows 2000. Установка показана на рис.2.

 

 

Рис. 2. Установка службы IWProject.exe

 

Список служб при этом пополнится новым модулем IWProject:


 


 

Протестируем работу службы. На клиентской машине в строке URL броузера укажем:

 

http://10.51.8.82:1001/start

 

Результат запроса выглядит следующим образом:

 

 

 Для продолжения разработки и отладки нашего приложения ,остановите службу на странице Services, выбрав команду Stop, а затем разрегистрируйте ее c ключом -uninstall, в режиме, показанном на рис.2 . Для возобновления работы, убедитесь, что служба установлена и запущена.

 

3.     Использование IntraWEB-сервера в качестве основного.

 

Для работы IntraWeb-сервера можно использовать HTTP 80 порт при условии, что основной WEB-сервер (IIS или Apache) остановлен. Другой путь - перенаправлять вызовы, изменив код основной страницы в случае IIS или параметров файла httpd.conf в случае Apache. Перенаправление вызова для IIS поясняет пример, показанный ниже:

 

<META HTTP-EQUIV=”Refresh” CONTENT=”3";

URL=”http://10.51.8.81:1001/start">

 

<HTML>

<HEAD>

<TITLE>Перенаправление вызова на IntraWeb-сервер через 3 сек.</TITLE>

<META HTTP-EQUIV="Refresh" CONTENT="3;

URL=”http://10.51.8.81:1001/start">

</HEAD>

<BODY>

<P>Сейчас должно произойти перенаправление вызова на IntraWeb-сервер. Если этого

не произойдет, перейдите по ссылке

<A HREF=”http://10.51.8.81:1001/start “> сюда</A>.</P>

</BODY>

</HTML>

 

4.     Параметры командной строки

 

В режиме Stand-alone при запуске приложения можно указывать параметры командной строки, например:

 

 http://10.51.8.81:1001/start?param1=a&param2=b

 

В этой строке передаются 2 параметра со значениями a и b соответственно. Обработка параметров производится при помощи обращения к WEBpplication.RunParams, например:

 

with WEBApplication.RunParams do if Count>0 then

  begin

     s1:=Strings[0]; s2:=Strings[1]; s3:=Strings[2];

  end;

 

В завершении необходимо добавить, что закрытие WEB-браузера на клиентской машине не означает мгновенного освобождения серверных ресурсов, связанных с завершившейся работой. Сессия продолжает быть открытой в течении времени, установленном для IntraWeb-сервера (по умолчанию 10 минут). Эту особенность следует учитывать при программировании баз данных с ограниченным числом подключений: клиент, зашедший просмотреть пару записей и тут же покинувший сайт, может удерживать подключение к БД в течение долгого времени.

 

 

5.     Ограничения версии IntraWeb 5.0.

 

При использовании приложения как сервиса необходимо уделить внимание двум, на первый взгляд таким второстепенным параметрам компонета IWServerController, как:

·       AppName. Используйте для каждого приложения уникальное имя, набранное латинскими буквами и не содержащее пробелов.

·       Description. Используйте для каждого приложения уникальное имя. Имейте ввиду, что это имя появляется в списке сервисов, который Вы используете, чтобы запустить или остановить данную службу. Поскольку список сервисов операционной системы может быть очень большим, для облегчения поиска "своего" сервиса используйте запоминающиеся уникальные имена.

 

Регистрация сервиса, спроектированного без учета вышеупомянутых правил, не производится. При этом никаких сообщений система не выдает и в большинстве случаев понять, что именно происходит в этот момент, бывает очень трудно. Для выяснения причины того, почему сервис не устанавливается, рекомендуем запускать его в среде Delphi с командной строкой регистрации -install (меню Run|Parameters|Parameters). При этом ошибка регистрации будет отображена в Delphi IDE с расшифровкой настолько полной, насколько это позволяет сама среда Delphi.

 

©Ренжиглов Николай (Nick Renzhiglov). http://mabanza.narod.ru  email:mabanza@yahoo.com

Все права защищены. Цитирование только с согласия автора.

 

 



[1] Выбрана неверная транскрипция слова browser. Зато созвучно поэту.

[2] www.atozedsoftware.com

[3] www.delphiinformant.com

[4] IntraWeb 3.0 Documentation. Manual and Tutorials. CopyrightÓ 1995-2001, Nevrona Designs.



Сайт создан в системе uCoz