Написать пост

Ускоряем разработку middleware

Аватар Лапа

Обложка поста Ускоряем разработку middleware

Любой веб-разработчик в процессе создания приложений сталкивается с задачей создания middleware слоя. Это неотъемлемая часть процесса разработки. Как и любую прочую деятельность, этот процесс можно так или иначе оптимизировать путем использования типовых решений и следования принципу DRY. Попробуем оценить имеющиеся на рынке инструменты для решения данной задачи при наличии ключевого условия — middleware слой должен предоставлять доступ к данным с помощью интерфейса OData.

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

Scaffolding CRUD генераторы

Вкратце, CRUD генератор (от англ. — create, read, update и delete) представляет собой специальный инструмент для генерации кода. CRUD генератор позволяет разработчику, использующему определенную платформу, решить задачу быстрого создания простенького веб приложения, использующего в качестве источника данных определенный backend. Наиболее очевидный кейс — создание самостоятельного админского приложения (интерфейса). Отличительной особенностью CRUD генераторов является исключительная зависимость и ориентированность на определенную платформу разработки и среду исполнения. Таким образом, CRUD генератор является полезным инструментом в арсенале веб разработчика, но сфера его применения ограничивается конкретным языком и зависимостью от среды исполнения.

Microsoft WCF OData

Инструмент включен в хорошо известный продукт Microsoft Visual Studio. В двух словах, технология WCF OData позволяет создать веб сервис для публикации БД, управляемых такими СУБД как MySQL, MS SQL Server и т.д. Как уже было отмечено, WCF входит в состав Microsoft Visual Studio, а также использует ORM Entity Framework, что является его ключевой особенностью. Дополнительно можно отметить, что использование WCF не избавляет полностью от необходимости кодинга. Посмотреть пример создания middleware слоя с помощью WCF OData можно тут.

Gizur

Очень лаконичное описание продукта можно получить из его полного названия — Gizur’s OData server for MySQL. Как ясно следует из названия, использование Gizur ограничивается применением в качестве backend’а лишь СУБД MySQL. Продукт является open source решением, исполненным на NodeJS.

Проанализировав представленные выше инструменты и опираясь на собственное видение потребностей автоматизации в рамках рассматриваемой предметной области, компания RWAD Technologies подготовила самостоятельное типовое решение — продукт OData Server.

OData Server — это .NET приложение, предоставляющее автоматически генерируемый OData сервис «над» существующей базой данных. Таким образом, продукт по сути представляет собой готовый middleware слой — сервис, просто запустив который, вы сможете пользоваться REST интерфейсом доступа к данным с учетом обширных возможностей спецификации OData.

Для использования функциональных возможностей OData Server пользователю необходимо выполнить буквально три шага, что займет считанные минуты:

  • Создание схемы управления доступом (реализуется путем исполнения в исходной БД sql-скриптов, входящих в дистрибутив продукта) — в случае использования компоненты разграничения доступа OData Server:
Ускоряем разработку middleware 1
  • Редактирование файла конфигурации OData Server (устанавливаются параметры подключения к конкретной БД, хост формируемого REST сервиса, а также настройки управления доступом):
Ускоряем разработку middleware 2
  • Собственно запуск OData Server и использование его функциональных возможностей:
Ускоряем разработку middleware 3

OData Server реализует следующие функциональные возможности и фичи:

  • Продукт совместим с различными СУБД, при этом обеспечивается идентичная функциональность. На данный момент реализована поддержка MS SQL Server и MySQL;
  • Возможность адаптации REST сервиса под измененную схему БД простым перезапуском OData Server. Для сравнения, создание функционально схожего решения на базе технологии MS WCF Data потребует полного цикла сборки и деплоя проекта;
  • Построение проекций (с помощью параметров $select и $expand);
  • Использование пагинации на стороне сервера;
  • Защита данных от несанкционированного доступа обеспечивается встроенной в продукт поддержкой аутентификации и авторизации пользователей (типы аутентификации basic и token);
  • Готовый пользовательский UI для управления учетными записями пользователей, ролями и правами доступа к объектам исходной БД;
  • OData Server доступен в различных форм-факторах: консольное приложение, служба Windows и узел MS IIS. Процедура установки автоматизирована пакетными файлами. Функционал для всех трех представленных форм-факторов полностью аналогичен;
  • Поддержка хранимых процедур, вызов которых реализован через REST интерфейс;
  • Встроенная в продукт и настраиваемая система логгирования.

Разумеется, немаловажным фактором для принятия решения об использовании/не использовании OData Server являются условия распространения продукта. На данный момент имеется бесплатная версия OData Server, которая по функциональности не отличается от платной версии, НО имеет ограничение по количеству формируемых OData Server запросов/ответов. Сейчас это ограничение составляет 50 запросов/ответов в час. Естественно, указанное ограничение по сути не позволит использовать продукт в рамках проектов по разработке на коммерческой основе полноценных веб приложений. Однако, бесплатной версии будет вполне достаточно например для создания REST слоя в веб «админке» для какой-либо системы.

Одновременно с этим, по соотношению цена/функциональность видится весьма привлекательной стоимость платной версии. Готовый middleware можно приобрести за сумму от 2800 рублей за одну установку. Очевидно, что разработка аналогичного решения с нуля будет стоить кратно больше. При этом за указанную сумму покупатель приобретает лицензию на использование OData Server без ограничения срока действия. Более наглядная и подробная информация о ценах представлена на сайте RWAD Technologies.

Отдельно хотелось бы подчеркнуть, что OData Server ориентирован в том числе и на потребителей за пределами Российской Федерации. После выхода на «зарубежный» рынок цена на продукт будет скорректирована в сторону увеличения, потому что ценник в валюте, эквивалентный 2800 рублей за одну установку, является ощутимо заниженным. Поэтому именно сейчас  российские разработчики могут приобрести OData Server по очень комфортным ценам.

3К открытий3К показов