Оценка фреймворков веб-разработки для Delphi

ocenka-freymvorkov-veb-razrabotki-dlya-delphi

В одной из предыдущих статей под названием «Сайт на Delphi» было рассказано о том, что Delphi обладает очень богатыми возможностями для разработки фронтэнда и бекенда. Еще более ранее в цикле статей были описаны Интернет-технологии, такие клиент-сервер, удаленные базы данных, SQL-сервера, Web-сервера и т.п. В этой же статье мы подбреемся более детально к процессу разработки сайтов на Delphi и дадим оценку фреймворков веб-разработки для Delphi.

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

Мы все знаем, что, например Delphi FMX — это одна из лучших комбинация для кроссплатформенной разработки. Но что это может означать для web-приложений. Можно ли использовать те же инструменты, тот же набор навыков и туже среду (Delphi) для web- разработки.

Что ж, конечно можно. И успех того или иного проекта будет зависеть от выбранного фреймворка, потому что существует довольно много фреймворков. И сегодня мы рассмотрим основные из них, чтобы вы могли понять, какой фреймворк или библиотека вам подойдет для достижения максимальной продуктивности в web-разработке.

Мы поговорим о различных технологиях web-разработки, проведем обзор различных фреймворков, а затем перечислим сторонние решения, которые используются в этих технологиях.

Это, по сути обзор, где я собираюсь в общих чертах рассказать о различных фреймворках, чтобы классифицировать их в группы. Чтобы определиться с выбором фреймворка, на самом деле вам придется изучить их более подробно. Только так вы сможете поднять, на сколько подходит для вас тот или иной фреймворк.

Возможно в своих исследованиях я допустил какие то ошибки, но они были в виду большой масштабности этого исследования.

Существует вероятно еще много платформ для разработке сайтов на Delphi, которые я здесь рассматривать не буду, но здесь должно быть достаточно информации о том, чтобы у вас сложилось представление о том, что из себя представляют web-фреймворки для Delphi.

Итак, когда дело доходит до web-разработки, то используются в основном четыре технологии.

Четыре технологии разработки web-приложений

Итак, давайте посмотрим на рисунок ниже:

Технологии web-приложений
Технологии web-приложений

Клиентское приложение — это то, что запускается в вашем браузере. Оно использует HTML, который является языком разметки. С помощью HTML вы указываете, какой будет на странице текст, какие у него будут части и тому подобное.

Каскадные таблицы стилей CSS используются для оформления представления текста. То есть, если с помощью HTML вы задаете текст, то с помощью CSS вы определяете его цвет, выравнивание, фоновую подложку и так далее.

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

Но теперь все изменилось, теперь разметка разделена на HTML и CSS. Таким образом, HTML Отвечает за определение данных, а CSS — за оформление.

JavaScript отвечает за интерактивность элементов управления на странице. Так что, если при перемещении по странице или нажатие на что-то приводит к изменениям на странице, то это обычно делается с помощью JavaScript.

AJAX — позволяет загружать данные без перезагрузки web-страницы, то есть не нужно обновлять web-страницу, чтобы увидеть изменения в данных. Сейчас это уже стало нормой, но изначально, когда появилась поддержка AJAX — это было большим достижением.

Кроме того, есть XML и JSON. Это два способа представления данных. Обычно XML и JSON не используются для разметки данных, которые предназначены для обработки компьютером, но при этом они удобны для чтения и редактирования человеком.

JavaScript обрабатывает XML и JSON. Обычно JSON используется в JavaScript для создания некоторого контента на web-странице.

Таким образом, AJAX вызывает сервер REST, который представляет из себя web-API, предназначенный для передачи данных.

SOAP основан на XML. Он более сложный и надежный, чем REST. На самом деле SOAP — Это протокол, а REST просто описывает его структуру, если можно так выразиться. REST был разработан как альтернатива SOAP, потому что SOAP был слишком сложным и «тяжелым».

Сейчас мы сосредоточимся на клиентском приложении HTML (первый столбец картинки).

Здесь будут представлены некоторые фреймворки для REST-серверов и мы поговорим о том, как они работают и как их можно использовать.

Что входит в поставку RAD Studio?

Стандартная поставка RAD Studio

В комплект поставки входит множество инструментов для поддержки web-технологий:

Server Tehnologies

  • DataSnap
  • RAD Server/EMS Server
  • WebBroker
  • SOAP Services

Client Tehnologies

  • REST BaaS Client
  • Cloud Client Libraries
  • REST Client Labrary
  • HTTP Client Labrary
  • SOAP Client

Miscellaneous

  • Indy Labrary
  • Windows Socket Libraries

DataSnap, RAD Server и EMS Server — это по сути одно и то же. В предыдущем посте мы уже касались этих технологий. WebBroker является основой серверных технологий.

Также в поставку входят клиентские технологии. Как можно видеть из списка таких технологий также несколько.

WebBroker

WebBroker является основой для всех web-технологий, доступных в Delphi и в качестве сторонних дополнений.

Основная идея WebBroker заключается в том, чтобы абстрагировать концепцию HTTP-сервера, реализуя уровень, который позволяет вам использовать различные технологии web-серверов от старого доброго, работающего по протоколу CGI, до модулей Apache или даже независимых серверов.

Это позволяет работать как в Windows, так и в Linux. Идея заключается в том, что вы просто работаете с абстрактными запросами HTTP-сервера и его ответами. И они сопоставляются с конкретными классами, в зависимости от используемой технологии.

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

Другая концепция WebBroker заключается в том, что эта технология сопоставляет URL-адреса с действиями. В этом действии можно определить используемые HTTP-команды и указать результирующий тип содержимого.

WebBroker также поддерживает такие понятия, как web-фильтры и глобальные обработчики.

Delphi-фреймворки для разработки web-приложений и сайтов

На следующем рисунке показано условное разбиение некоторых фреймворков на три группы.

delphi фреймворки
Delphi-фреймворки

Не все эти фреймворки идеально вписываются в каждую из этих категорий. Но тем не менее, я разбил их так, чтобы у вас было представление о том, куда вам «идти» — что то вроде карты.

Для получения большей информации об этих продуктах вам следует обратиться к сайтам разработчиков данных фреймворков. Я довольно подробно изучил этот вопрос, но возможно допустил некоторые ошибки. Итак:

Первая категория — это транспиляторы из Pascal в JavaScript. Они ориентированы на клиентскую часть программы.

Вторая категория — это клиентские и серверные платформы. Это, так называемый, полнофункциональный или сбалансированный подход к разработке.

Третья категория — серверные приложения. Это серверные категории, ориентированные на работу с клиентами.

Вы можете совместить серверную часть с транспилятором и создать функциональный сбалансированный подход или комбинировать их по своему усмотрению. Серверные приложения и клиентские серверные платформы (вторая и третья категории) должны работать как в Delphi, так и в C++ Builder. Первая же категория предназначена для Object Pascal (Delphi). Поэтому они не будут работать с C++Builder. Но если вы хотите писать часть своего приложения на Delphi, а часть на C++ Builder, то вы безусловно можете воспользоваться этими транспиляторами.

Траспиляторы Object Pascal в JavaScript

Транспиляторы преобразуют код Object Pascal (Delphi) в JavaScript точно также, как компилятор преобразует его в машинный код для исполнения в среде Windows.

Идея заключается в том, что вы полностью используете все свои навыки работы с Delphi и при этом получать результат на чистом JavaScript. Идея такой транспиляции совершенно не нова для мира Delphi. Идея использования какого-либо транслятора или высокоуровнего языка для JavaScript довольно распространена.

Преимущество использования Delphi в качестве языка программирования высокого уровня заключается в том, что он обеспечивает безопасность типов данных и предоставляет множество возможностей, которые легко организовать в Delphi, но намного сложнее в JavaScript. Это упрощает разработку приложений и делает их более безопасными.

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

Первый транслятор (фреймворк), о котором мы поговорим — это Elevate Web Builder. Это полноценная среда разработки с компонентами, аналогичными VCL. Здесь можно создавать дизайн, добавлять различные визуальные компоненты, а затем писать код на Delphi. В этом фреймворке имеются компоненты д ля работы с базами данных. Кроме того, этот фреймворк позволяет разработать web-сервер, создавая при этом модули на Delphi и запускать их на WIndows-сервере. Таким образом, у данного фреймворка, как бы свой собственный стек для разработки, ориентированный на клиентскую сторону, если применить вышеупомянутую классификацию.

Smart Mobile Studio — это еще один крупный фреймворк в этой области, который существует уже давно. Данный фреймворк значительно расширяет возможности стандартного Delphi. Добавлено множество новых функций. Но так же, как и в Elevate Web Builder код пишется на Delphi, а затем компилируется в JavaScript.

Третий вариант (мой любимый) — TMS Web Core. У них есть множество крутых инструментов. И если вы никогда не пробовали TMS Web Core, обязательно познакомьтесь с ними. Вы наверняка оцените возможности этого фреймворка. Этот фреймворк отличается тем, что интегрируется в среду разработки Delphi (подобно IntraWeb).

Вы пишите на привычном Delphi, перетаскивая компоненты на форму и создавая обычное приложение. Затем приложение компилируется в JavaScript и запускается сразу в браузере. Это действительно удобно и эффективно. Как и в обычном приложении при разработки web-приложения можно отлаживать свой код, устанавливая точки останова в коде на Delphi, а затем запускать код в браузере. И это приведет к остановке кода и вы сможете увидеть строку оставновки.

Еще одна особенность данного фреймворка. которая отличает его от других состоит в том, что у него есть кроссплатформенная библиотека компонентов под названием FNC, которая поддерживает FMX, Web Core, VCL и другие...

Таким образом, мы получаем набор компонентов, который работает на всех платформах. И это работает с различными серверными платформами. Это работает с RAD Server, это работает с DataSnap, а также с TMS XData.

Что касается внешнего вида приложения, то данный фреймворк работает с таблицами стилей CSS. Поэтому для стилизации можно использовать хоть свой собственный стиль, хоть популярные фреймворки JavaScript, такие как Bootstrap. Фирма разработчик TMS также активно работает над тем, чтобы использовать поддержку компонентов Ext JS, который является одним из самых мощных JavaScript-фреймворков в мире.

Client/Server Frameworks

Клиент-серверные фреймворки — это сбалансированные платформы для создания web-приложения. Как это работает?

Клиент-серверные фреймворки
Клиент-серверные фреймворки

Вы используете фреймворк для создания приложения. Обычно оно работает с web-брокером в качестве ядра на сервере. И затем сервер создает HTML, CSS и JavaScript-файлы, которые отправляются клиенту. С помощью трансляторов вы часто просто создаете HTML и JavaScript-файлы, которые размещаете на web-сервере и загружаете их в браузере.

На стороне сервера в этом случае ничего особенного не требуется. Это клиентские решение, в то время, как эти же решения являются серверными, которые упрощают создание удобного клиента.

Клиентское приложение, созданное с помощью фреймворков может обращаться к Вашему серверу или вызывать его для получения данных, а также может обращаться к внешним REST-API на других серверах для получения данных.

И первый фреймворк, о котором мы кратко поговорим, называется AtoZed Software's IntraWeb. И не только потому, что он первый в списке, но и потому, что этот фреймворк выступает пионером, то есть был первым в этой области.

Он существует уже давно и входил в поставку ранних версий Delphi. Это очень крупный игрок.

Версия 14 уже много лет входит в состав Delphi, как и предыдущие версии. Она по прежнему бесплатна для разработчиков, которые приобрели Delphi, так что можно смело зайти на сайт компании Atozed и скачать ее.

Версии 15 и 16 включают в себя новые функции и поддержку Linux. Версия же 17 является огромным шагов вперед по сравнению с предыдущими версиями.

IntraWeb работает следующим образом... Вы устанавливаете ее в IDE. Далее, как и при обычном проектировании приложений вы используете формы для перетаскивания на них компонентов. Эти компоненты основаны на библиотеке VCL и вы пишите код на Delphi.

Но в отличии от транслятора этот Delphi-код не превращается в JavaScript. Когда пользователь производит какое-либо действие или нажимает кнопку, он отправляет запрос на сервер. Таким образом, код по-прежнему выполняется на сервере, но затем он отображается в баузере.

Вы также можете использовать TypeScript или JavaScript Для расширения написанного кода, чтобы он выполнялся в браузере, но это не обязательно.

Итак, вы можете выполнять все только на сервере и проверять на стороне сервера или выполнять все на стороне клиента с помощью TypeScript или JavaScript.

Одно из преимуществ IntraWeb, помимо того, что это одна из самых надежных и проверенных временем систем, является наличие в ней сторонних компонентов. Многие из них добавляют поддержку различных фреймворков или расширяют их различными способами.

Далее мы поговорим о фреймворке UniGui от турецкой компании FMSoft. Многим очень нравится это фреймворк. Он похож на IntraWeb, устанавливается в IDE, используется для разработки дизайна и имеет очень «легкие» элементы управления VCL, а также поддерживает использования событий JavaScript, используемых на стороне клиента. Для клиентской части используется Ext JS

Kitto также для клиентской части использует Ext JS и ориентирован на приложение, управляемое данными. Основное отличие Kitto от других фреймворков заключается в том, что в Kitto не визуального дизайнера. У них есть отдельное IDE, которое позволяет определять внешний вид пользовательского интерфейса, но это не визуальный дизайнер.

Rest Servers

Серверы REST — это решения, ориентированные на сервер, но они часто имеют клиентские приложения, образцы или библиотеки, которые можно использовать на стороне клиента. но на самом деле они ориентированы на разработку серверных приложений.

Эти серверы производит REST-сервер, который затем генерирует данные, которые могут быть использованы клиентом. Этим клиентом может быть web-броузер, windows-клиент или, скажем, клиент, работающий на мобильных устройствах.

Если вы хотите создать масштабное решение, которое будет использоваться различными типами клиентов, следует обратить внимание на серверы REST, а затем использовать транспилятор для создания web-клиента, а затем FMX для создания Андроид-клиента/IOS и MACoS.

В состав Delphi входят такие REST-сервера, как:

  • RAD Server;
  • DataSnap;
  • WebBroker

Есть и сторонние фреймворки, такие как:

  • Delphi MVC Framework;
  • MARS-Curiosity Delphi REST Library;
  • Synopse mORMot ORM/SOA/MVC Framework

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

Synopse mORMot ORM/SOA/MVC Framework — это фреймворк для разработки web-приложений на основе MVC. Это полноценный фреймворк, который не использует WebBroker. Я сказал, что большинство из них использует WebBroker. Этот нет.

Библиотека данного фреймворка довольно большая. Он полезен не только для web-разработки. У него есть несколько других архитектур. Он имеет встроенный движок SpiderMonkey для серверной бизнес-логики. С помощью этого можно писать JavaScript-код, который будет выполняться на сервере.

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

MARS-Curiosity Delphi REST Library является вероятно самым новым в этом списке. Это легкая в использовании библиотека REST, построенная на основе WebBroker, который использует все новейшие возможности Delphi.

В нем есть поддержка FireDac для работы с базами данных. Он разработан таким образом, что его можно запустить всего за пять минут. Это открытый исходный код.

Delphi MVC Framework — еще один отличный фреймворк, который доступен. Опять же он основан на WebBroker, включает в себя мастер IDE, работает на Apache или IIS в Widows и Linux.

Synopse mORMot ORM/SOA/MVC Framework же, например, работает в Windows. Если необходимо использовать Linux, то с этим фреймворком придется использовать Free Pascal (хотя это может быть устаревшей информацией).

Теперь рассмотрим альтернативный и довольно не обычный подход к разработке, который заключается в полном разделении web-разработки, web-сервиса и клиентской разработки web-приложения.

Я хочу сосредоточиться на RAD Server, но прежде этого хочется вкратце упомянуть DataSnap, который является еще одни решением, входящим в состав Delphi.

Оба этих решения предоставляют REST-API, оба находятся в стадии разработки. Нов то время, как DataSnap имеет много возможностей для обратной совместимости со старыми технологиями, такими как поддержка COM и TCP/IP.

Позже в него были добавлены HTTPS-слои поверх базовой архитектуры, что делает реализацию REST в DataSnap немного менее современной и чистой по сравнению с другими решениями, такими как RAD Server.

Преимущество DataSnap в том, что он существует уже давно. Эта технология позволяет создавать все необходимое для многоуровневой архитектуры.

В отличии от этого RAD Server Не позволяет создавать собственные приложения, а представляет собой готовое решение, в котором вы можете развернуть свои собственные пакеты для расширения базового API, которое уже существует в RAD Server и готово к использованию, включая управление пользователями, группы, разрешения, а также обширную аналитику API.

В систему встроено множество функций, а также поддерживается более современный REST и отображение методов. RAD Server поддерживает JSON первого класса и очень четко определяет разновидности HTTP и их отображения в коде.

Кроме того, в RAD Server предоставляются компоненты для использования кредитных карт, которые можно добавить в свой сервер, чтобы быстро создавать серверные приложения.

RAD Server поддерживает многопользовательский режим, то есть возможность изолировать разных пользователей в отдельных группах и идентифицировать их по входящим запросам.

В большинстве случаев имеет смысл разделить разработку серверной и клиентской частей, хотя, я согласен, что быстрее и удобнее использовать инструмент, позволяющий работать с обеими частями.

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: