Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Переход на RESTful с `idHttpServer`: Модернизация веб-сервера в Delphi

Delphi , Программа и Интерфейс , Процессы и Сервисы

Переход на RESTful с idHttpServer: Модернизация веб-сервера в Delphi

Вопрос о переходе на RESTful API для существующего веб-сервера, написанного на Delphi XE2 с использованием компонентов Indy 10, является актуальным для разработчиков, стремящихся улучшить свои приложения. RESTful стиль взаимодействия с сервером через HTTP запросы и ответы в формате JSON может значительно упростить и ускорить разработку и поддержку веб-сервисов.

Проблема

Разработчик столкнулся с необходимостью модернизации веб-сервера, реализованного на idHttpServer, который отвечает на традиционные HTTP GET запросы. Сервер уже имеет множество функций для локальной сети и обращается к данным SQL сервера, возвращая их в формате JSON. Низкое количество одновременных доступов (максимум 5) позволяет не перегружать ресурсы сервера. Однако, разработчик хотел бы, чтобы сервис был описан и мог быть вызван, подобно тому, как это реализовано в DCOM через интерфейсы IUnknown и IDispatch, но без необходимости публичной реализации, как в WSDL.

Решение

Использование RESTful архитектуры для сервера кажется наиболее подходящим решением. Разработчик также рассмотрел возможность использования DataSnap, AtomPub и RSDL, но предпочел бы решение, не требующее использования Apache или IIS и позволяющее работать как обычному приложению Windows.

Подтвержденное решение заключается в использовании mORMot, открытой библиотеки, которая предоставляет возможность публикации и использования сервисов через JSON и REST. mORMot автоматизирует большинство процессов, требуя от разработчика только определения сервисов с использованием обычных интерфейсов Delphi, которые будут использоваться как контракты сервисов.

Пример определения интерфейса сервиса:

type
  ICalculator = interface(IInvokable)
    ['{9A60C8ED-CEB2-4E09-87D4-4A16F496E5FE}']
    // сложение двух целых 32-битных чисел
    function Add(n1, n2: integer): integer;
  end;

И реализация сервиса в виде класса:

type
  TServiceCalculator = class(TInterfacedObject, ICalculator)
  public
    function Add(n1, n2: integer): integer;
  end;

function TServiceCalculator.Add(n1, n2: integer): integer;
begin
  result := n1 + n2;
end;

Server.ServiceRegister(TServiceCalculator, [TypeInfo(ICalculator)], sicShared);

Использование сервиса клиентом:

var I: ICalculator;
begin
  if Client.Services['Calculator'].Get(I) then
    Result := I.Add(10, 20);
end;

mORMot можно запускать как приложение или сервис, и он поддерживает дополнительные функции, такие как безопасность и управление сессиями. Он совместим с Delphi 6 до XE4 и может работать как на 32-битных, так и на 64-битных платформах.

Альтернативные клиенты

Разработчик также интересовался возможностями использования mORMot для клиентов на Android и других платформах. mORMot уже поддерживает клиентские запросы на JavaScript, но для Java и других языков клиентская часть потребует дополнительной разработки. Однако, учитывая, что mORMot использует простой и документированный REST схем, создание клиентских приложений на Java или даже на VB.NET-подобных языках, таких как B4A, может быть выполнимо.

Интеграция с существующим сервером

Вопрос о том, является ли mORMot полноценным сервером или библиотекой, которую можно интегрировать в существующий сервер, важен для разработчика. mORMot позволяет иметь несколько серверов в одном экземпляре приложения, используя высокопроизводительный http.sys, что дает лучшие результаты, чем Indy, и позволяет регистрацию на уровне URI, что может быть полезно для совместного использования порта и корневого URI с IIS.

Заключение

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

Создано по материалам из источника по ссылке.

Разработчик стремится модернизировать веб-сервер, написанный на Delphi XE2 с использованием Indy, перейдя на RESTful API для повышения эффективности и упрощения взаимодействия с сервисом.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-09-02 17:48:17/0.0057590007781982/1