Pull to refresh

Hivext: Платформа веб-сервисов

Reading time 5 min
Views 1.4K
Hivext Technologies

Продолжаем знакомить читателей хабра с разработкой в области платформенного построения приложений. Освежая память, напомним что Hivext — это платформа веб-сервисов для веб-приложений, цель которой предоставить набор сервисов для полноценной и удобной разработки Web, Desktop и Mobile приложений.

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

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

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

Схематическое представление платформы в Сети


Common Schema

Внутренняя сеть Hivext

Сервера СУБД — базы данных приложений, хранение типов, объектов и других данных.
Сервера приложений — вычислительные ресурсы, поддержка бизнес логики приложений, сервисов, файловые ресурсы приложений.
Сервера web-сервисов — сервисы платформы с разделением по пространствам имен (пользователи, данные, безопасность, разработка, хранилища).
www-сервера проекта — документация, обратная связь с разработчиками.

Внешняя сеть

Разработчики — создание новых приложений, расширение сервисов платформы.
Пользователи сети — аудитория использующая веб-приложения.
Внешние www-сервера — ресурсы приложений и данные могут размещаться (дублироваться) на внешних серверах.
Desktop-приложения — могут обмениваться данными через сервисы или хранить данные удаленно в базе (единый интерфейс записи/чтения упрощает обмен/хранение).
Мобильные устройства (портативные устройства) — приложения используют мощности платформы для решения задач поставленных разработчиком, что позволит создавать более функциональные приложения с минимальными затратами.

Особенности разработки


Для начала работы с платформой необходимо и достаточно
  • Выбрать язык программирования, на котором будет разрабатываться приложение;
  • Делать требуемые http запросы (например, через готовые библиотеки);
  • Редактор кода.
Готовые приложения можно разместить на любом хостинге, можно запускать локально или это может быть desktop приложение. Таким образом, платформа предоставляет полную свободу действий относительно местоположения точки входа в ваше приложение.

На сервере документации имеется более детальное описание (Нello world doc.hivext.ru/index.php/Начинаем_разработку) порядка действий, которые необходимо сделать в начале разработки приложений на базе палтформы Hivext.

Основные добавления/изменения


На очередном этапе развития платформа дополнилась следующими возможностями:
  • Добавлен сервис Структур;
  • Добавлен сервис Управление доступом;
  • Доработана API Консоль (возможности консоли позволяют работать с любыми методами и сервисами платформы);
  • Добавлено Управление приложениями (генерация/удаление идентификаторов, редактирование информации о приложении);
  • Настроен форум forum.hivext.ru для общения разработчиков, оперативного получения ответов на вопросы по платформе Hivext;
  • В документации размещены примеры создания элементарных приложений (пока для языка Javascript, но статьи также будут полезны разработчикам на других языках).

Итого, в совокупности, на данный момент реализованы следующие сервисы:
  • Регистрация
  • Идентификация и аутентификация
  • Управление аккаунтом
  • Структуры
  • Управление доступом (интегрирован на уровне платформы в другие сервисы)
  • Управление приложениями
  • Файловое хранилище

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

Остановимся на двух новых сервисах Структуры и Управление доступом.

Сервис Структур

Сервис структур позволяет гибко управлять базой данных, создавать таблицы, поля с указанием типа, делать записи в таблицах, проводить ассоциации между данными. Сервис базируется на технологии ORM (Object-relational mapping — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных»). Это позволяет максимально абстрагироваться от СУБД и стоить логику работы приложения на основе объектов.

Сервис структур содержит собственный SQL like процессор для структурированных запросов. Все SQL запросы разбиваются на критерии, что максимально исключает возможность вредоносных инъекций. В добавок реализован еще один интересный язык запроса — JSONQL. Условия запроса по критерию формируются в виде JSON строки. К примеру: {name:{like:['Bublik', 'Marcipan']}}.

С сервисом структур вплотную связан сервис Управления доступом, что позволяет задавать права доступа на типы и объекты.

Сервис Управление доступом

В основе сервиса лежат две различные системы контроля доступа Ролевое разграничение прав и Дискреционная система на основе списков (Access Control List — ACL). Сервис объединяет эти системы в гибкий инструмент. Можно воспользоваться как ролевыми методами для установки прав так и ACL методами. Ролевое разграничение больше подходит для предварительного описания политик доступа для групп (гостей, пользователей, администраторов и т.д.). Разграничение доступа на основе Списков ACL больше удобно для связи только что созданного объекта с небольшой группой конкретных пользователей). В большинстве случаев достаточно описать политики доступа через Роли. В любом случае при поиске того или иного права система идет от частного к общему (т.е. приоритетны права доступа установленные на конкретные связи пользователя с объектом, чем права установленные на группы).
В результате мы имеем очень гибкую систему прав доступа.

Подводим итог


С добавлением двух вышеописанных сервисов теперь платформа позволяет дополнительно:
  • динамический ORM мапинг обьектов
  • SQL запросы данных по критериям
  • JSON запросы данных по критериям
  • возможность динамического создания прав и ролей доступа во время выполнения приложения

На базе платформы создано тестовое приложение-пример «Галерея картинок». Реализация такого приложения, с помощью имеющихся сервисов, максимально проста и понятна.

doc.hivext.ru/index.php/Javascript.Галерея — пошаговый туториал «Как создавалась галерея»: генерация идентификатора, создание типов, настройка прав доступа и финальный код. Что примечательно большая часть работ выполняется через API Консоль, без программирования.
code.hivext.ru/examples/js/gallery — сама галерея картинок, работающая на сервисах платформы.
Пока еще девственный скриншот галереи.
Gallery Preview

Текущий статус и направления развития


На недавно состоявшейся в Киеве конференции CodeCamp 2009 был представлен доклад про Hivext. Слушатели были приятно изумлены и заинтригованы предлагаемым подходом к построению приложений. Судя по большому количеству общих и персональных вопросов разработчикам понравилась концепция платформы.
В течении ближайших двух недель планируется запустить приватную бета версию сервиса, о чем будет сообщено дополнительно. Вы сможете персонально оценить простоту и в то же время мощность концепции платформы Hivext. В дальнейшем планируется максимально стабилизировать работу текущих сервисов, а также добавить еще несколько очень важных и необходимых сервисов. Каких? Скоро узнаем.

Документация по платформе
API Консоль (в ней же можно зарегистрироваться и «похимичть» с сервисами платформы)
И напоследок, открыт форум forum.hivext.ru — пишите, будем рады общению, на все вопросы последуют оперативные ответы.
Всех благ.
Tags:
Hubs:
+19
Comments 21
Comments Comments 21

Articles