IntraWeb. Пишем сайты на Delphi

Многие уже привыкли к тому, что Delphi позволяет создавать приложения не только для Windows.

Разработка на Delphi под MacOS, iOS и Android сегодня уже не вызывает особого удивления. Однако в Delphi уже довольно давно существует ещё одна возможность, которую обычно обходят стороной. Это разработка web приложений.

Для создания web приложений в Delphi используется технология IntraWeb, впервые ставшая доступной в версии 7. Она позволяет создавать web страницы в режиме визуального редактора по аналогии с VCL. Но, при этом сам проект и применяемые классы и компоненты адаптированы специально для работы с web.

Пример приложения IntraWeb

Создание проекта IntraWeb выполняется стандартным для Delphi способом.

После выбора «IntraWeb Application Wizard» и нажатия кнопки «Ok», будет необходимо выбрать тип IntraWeb приложения, указать название проекта и папку, в которой будут сохраняться его файлы.

В Delphi XE8 можно выбрать один из двух типов приложения IntraWeb:

  • StandAlone Application
    Windows приложение с Web интерфейсом;
  • ISAPI Extention
    Расширение для web сервера IIS.

По умолчанию выбран первый вариант. Оставим выбор без изменений.

После нажатия кнопки «Ok»будет создано приложение, состоящее из двух основных модулей: главная форма (обычно Unit1) и модуль, отвечающий за механизм пользовательских сессий (обычно UserSessionUnit).

Файлы проекта (Project) и контроллера сервера (ServerController) выполняют по большей части служебные функции и лучше без необходимости их не трогать.

В визуальном редакторе поместим на главную форму компонент TIWLabel и напишем в нём какой-нибудь текст. Например: «This is IntraWeb!».

Однако после компиляции приложения мы сразу этот текст не увидим.

Вместо этого появится окно сервера приложений IntraWeb.

Дело в том, что исполняемые файлы IntraWeb приложений уже включают в себя web сервер, который обрабатывает запросы браузера и отображает созданный в редакторе интерфейс. Также этот сервер позволяет выполнить ряд настроек его работы.

Для того чтобы увидеть нашу главную форму достаточно просто нажать в окне сервера кнопку со значком нужного браузера или ввести в адресной строке браузера: https://127.0.0.1:51865/$/. Где 51865 – это номер порта, который может быть и другим.

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

И то и другое реализуется и работает без проблем.

Ниже представлен исходный код обработчиков соответствующих кнопок. Несмотря на свою узкую «специализацию» компоненты IntraWeb имеют очень много общего со своими аналогами из VCL.

Работа с базами данных

Само взаимодействие с базами данных почти полностью аналогично VCL. Отличие только в том, что вместо «обычных» компонентов DataControls используются их аналоги из IntraWeb Data.

В тоже время разработка проекта для работы с базами данных имеет ряд особенностей:

  • При создании такого проекта в окне, где выбирается тип приложения необходимо установить флажок «Pool Data Connections»;
  • IntraWeb, в отличие от VCL, не всегда корректно работает с модулями данных (DataModule). Поэтому, все компоненты, которые отвечают за работу с базой данных (Connection, Query, Table и т.д.), лучше размещать на той же форме, где реализован интерфейс пользователя.
    В противном случае велика вероятность возникновения фатальных ошибок.

На скришоте ниже показан пример приложения IntraWeb, работающего с базой данных. Интерфейс пользователя реализован на основе трёх компонентов:TIWDBGrid, TIWDBEdit и TIWDBNavigator.

Очень немногие технологии позволяет без особых усилий сразу объединить на одной web странице представление данных и все операции с ними. Дело в том, что даже сегодня, несмотря на все разномастные фреймворки и прочие «результаты прогресса», эта задача сама по себе далеко не из лёгких. В тоже время IntraWeb с ней легко справляется, облегчая труд разработчика и экономя время.

Вообще, работа с базами данных всегда была одной из самых сильных сторон Delphi. И то, что здесь эта тенденция сохранилась, не может не радовать.

«Плюсы» и «минусы»

Как и любая другая технология IntraWeb имеет свои достоинства и недостатки.

«Плюсы»
  • Удобство.
    StandAlone приложения не нуждаются в web сервере. А, если приложению не требуется база данных или ему достаточно SQLite или Access, то о развёртывании инфраструктуры можно вообще забыть;
  • Простота освоения и работы.
    IntraWeb выполнена по максимальной аналогии с VCL. Поэтому, её освоить сможет без труда даже начинающий программист.
    Кроме того для того чтобы создавать сайты на IntraWeb нет необходимости изучать вёрстку. Всё можно сделать в визуальном редакторе;
  • Один язык программирования для Back-end и Front-end.
    Всё можно написать на Delphi;
  • Удобный и функциональный механизм работы с базами данных;
  • Совместимость с другими решениями для Delphi.
    Если модуль или библиотека не имеют жёсткой привязки к конкретной технологии (например, той же VCL), её можно задействовать и в IntraWeb.
«Минусы»
  • Ограниченные возможности по разработке интерфейсов пользователя.
    Этот недостаток отчасти оборотная сторона возможности обходиться без «обычной» вёрстки, а отчасти следствие функциональных возможностей IntraWeb.
    Хотя визуальные компоненты IntraWeb и поддерживают CSS, интерфейсы web приложений на основе этой технологии сложно назвать современными.
  • Ограниченный набор компонентов для работы.
    К сожалению, тот базовый набор компонентов, который входит в комплект поставки, это всё, что есть у разработчика. Дополнительных компонентов для IntraWeb нет, как «родных», так и сторонних;
  • Нестабильность и ошибки в работе.
    IntraWeb (особенно расширения ISAPI), по праву считается очень капризной. Поэтому нужно быть готовым устранять проблемы, возникающие даже там, где в VCL их просто не может возникнуть;
  • Высокая стоимость как самого Delphi так и IntraWeb (если версия «из коробки» не устраивает).

Всё это в конечном итоге определило узкую сферу применения IntraWeb.

Web приложения на основе этой технологии в основном разрабатываются для внутреннего пользования и почти не встречаются на просторах интернета.

Это вовсе не означает, что InraWeb это «плохо». Ни «плохих» ни «хороших» технологий не существует. Другое дело, что разные технологии могут решать одни и те же задачи с разной эффективностью.

С помощью IntraWeb Вам, скорее всего, будет трудно сделать эффектный landing page для Вашей компании. Однако при разработке корпоративной информационной системы с web интерфейсом для неё эта технология может очень сильно облегчить Вам жизнь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *