Многие уже привыкли к тому, что 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.
1 2 3 4 5 6 7 8 |
procedure TIWForm2.IWButton1Click(Sender: TObject); begin WebApplication.ShowMessage('Вы только что нажали кнопку'); end; procedure TIWForm2.IWButton2Click(Sender: TObject); begin IWLabel1.Caption := DateToStr(Date); end; |
Работа с базами данных
Само взаимодействие с базами данных почти полностью аналогично 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 интерфейсом для неё эта технология может очень сильно облегчить Вам жизнь.
Добавить комментарий