Delphi+UniGui. Пишем первый “Hello World” под WEB. Легко и просто

Введение

В данном посте я отвечу на главный вопрос, который волновал меня с начала времен изучения Delphi – можно ли на Delphi XE 10 Seattle легко и просто писать под WEB? То, есть, в стиле Rapid Application Development (RAD) – визуально спроектировать, прописать все обработчики – так как мы это делаем для обычного Desktop приложения, но запустить такое приложение в браузере? Я был удивлен, но это возможно! Нет, я не говорю о технологии IntraWeb, которую многие ругали за сырость, я говорю о совершенно новой технологии Universal Graphic User Interface – специальный framework, написанный для разработки веб-приложений под Dephi.

Технически, в данном посте, мы запустим на сервере IIS 8.5 “HelloWorld” ISAPI приложение, написанное в связке Delphi XE10 Seattle + UniGui и откроем его в браузере. Для некоторых людей, наверное, слишком много новых слов, поэтому немного расшифрую.

Вот что у нас получится в итоге этого поста

Это приложение, написанное на Delphi под Web. Кому интересны более содержательные демки по данной технологии пройдите по этой ссылке.

31

Какой набор программ потребуется?

Delphi RAD Studio (у меня XE10 Seattle)

UniGui – Universal Graphic User Interface – фрэймворк, написанный для разработки веб-приложений в стиле RAD под Delphi.

IIS – Internet Information Server – программа-сервер, от компании Microsoft (у меня на борту Windows 8.1 стояла версия IIS 8.5, единственное, нужно было её активировать).

ISAPI (согласно Чарльзу Калверту) – сформируем их на ходу в UniGui – dll библиотеки расширений веб-сервера (Microsoft IIS) – после загрузки остаются в памяти, дожидаясь следующих запросов клиента.

Примерно такое сочетание программ понадобится нам сегодня для написания “Hello Worlda” на Delphi под WEB.


 

Где взять эти программы?

IIS 8.5 был встроенным на моей windows 8.1 Единственное, что нужно было сделать – это активировать его. В сети много инструкций на эту тему, вот одна из них, на этом я подробно останавливаться не буду.

По поводу установки UniGui хочу сказать, что для скачивания Trial версии нужно сначала зарегистрироваться и зайти на форум. Далее, в правом верхнем углу увидите такую картинку

30

ISAPI приложение можно сделать из Delphi в чистом виде, либо лучше и проще через UniGUI FrameWork – как мы сделаем в этом посте далее.


Как установить UniGUI на Delphi Rad Studio?

Онлайн документация по установке фрэймворка UniGUI


Создание UniGUI ISAPI приложения на Delphi

File | New | Other

Выбираем Application Wizard

1

Далее, выбираем имя, директорию для проекта, и его тип – в нашем случае ISAPI Module (так как работать будем с IIS)

2

Что хочу сказать – UniGUI framework позволяет создавать самостоятельный сервер, комбинированный с ISAPI, только с ISAPI и службу Windows – как говорится на вкус и цвет. Можно для небольших программ и тестов, например использовать Standalone режим, а для больших проектов ISAPI.

Далее, разместим UniButton1 на форме (все компоненты на форме приложения UniGui) идут с префиксом Uni (UniButton, UniPanel и так далее)

3

Теперь напишем простейший обработчик событий на кнопку.

Финальным шагом станет компилирование проекта

Project | Compile Project ( Ctrl + F9 )

4

 

В результате, после компиляции, в папке win32 нашего проекта у нас будет файл Project1.dll. Для продолжения работы – перенесем файл Project1.dll в папку C:\Webapps

Как настроить IIS для UniGui ISAPI приложения ?

В видео ниже – подробное пошаговое объяснение о том, как настроить сервер IIS.


Также есть официальный документ от разработчика о том как настроить IIS

How to adjust IIS for UNIGUI?


 Основные шаги по настройке IIS

Добавляем новый пул приложений

8

 

Назовем его, скажем, MyWebApps, версия среды – без управляемого кода, режим конвейера – встроенный. Делаем все как на картинке ниже

9

 

Заходим в настройки…

10

 

Включаем поддержку 32-разрядных приложений

12

 

Далее, настраиваем параметры перезапуска

14

 

Жмем Ок, выходим из этого окна.

Далее идем в сайты и добавляем новое приложение

15

 

 

Выбираем псевдоним, пул приложений, физический путь

16

Выбираем физический путь, например C:\WebAps

7

 

Далее, 2 раза кликаем на MyWebApplication на дереве слева

17

 

Далее, убеждаемся что ISAPI-dll находится в группе Enabled (Включен), если в группе Disabled (Выключен), то…

18

 

Включаем, если отключен

19

 

 

Далее20
Далее, добавляем приложение в число разрешенных…

21

 

Выбираем физический путь

22

В итоге должно получиться так…

23

Далее, можно попробовать открыть браузер и набрать в адресной строке

http://localhost/mywebapplication/Project1.dll

На что мы получим такую ошибку

24

Для того, чтобы избежать этой ошибки, нужно в IIS проделать следующее

26

Потом необходимо включить анонимную проверку подлинности

27

Теперь пробуем ещё раз

32

Проверяем работу программы

31

Адрес у нас получился регистронезависимым (сработают оба варианта, см. ниже)

http://localhost/MyWebApplication/Project1.dll 

http://localhost/mywebapplication/Project1.dll

Выводы

  • Связка Delphi XE10 + UniGUI +IIS позволяет легко и быстро разрабатывать веб-приложения. Та схема, c настройкой IIS, которую я привел выше должна быть проделана лишь 1 раз, в дальнейшем, после корректной настройки IIS, можно будет сосредоточить усилия только на разработке приложений.
  • Нюанс приложений на UniGui в том, что по сути у нас на 1 dll будет 1 страница. Структура приложений формируется не страницами как таковыми в PHP например,а формами, как в Delphi.
  • Каждый новый скомпилированный файл можно будет подменять в директории C:\WebAps или любой другой, которую Вы выберете для размещения своих приложений, набирать в адресной строке http:// адрес сервера/папки/Ваше приложение.dll Либо можно будет сделать нормальный адрес, типа http://MyApp.com (об этом я расскажу в других постах)
  • UniGui построен на Ext JS, а это мощный фрэймворк сам по себе, главное преимущество – кроссбраузерность (корректно даже в IE), более подробно можно прочитать на сайте производителя Sencha
  • Ну и самое главное – пишем код в Delphi – получаем веб-приложение.
  • Что лично мне понравилось? Скорость разработки, она просто огромна, в сравнении с разработкой на PHP+JS за счет визуального проектирования ну и мощи самого языка Delphi.

by Stanislav_Panteleev