Продолжаем знакомить читателей хабра с разработкой в области платформенного построения приложений. Освежая память, напомним что Hivext — это платформа веб-сервисов для веб-приложений, цель которой предоставить набор сервисов для полноценной и удобной разработки Web, Desktop и Mobile приложений.
В этой статье мы раскроем тему архитектуры, что представляет платформа и как она должна выглядеть по замыслу разработчиков, мы постарались ответить на эти вопросы в виде блок схемы, которая уже появлялась в докладе по платформе на CodeCamp 2009.
Также в настоящей статье мы рассмотрим и расскажем про основные изменения и доработки с момента последней публикации статьи. В платформу добавились два «вкусных» сервиса.
На данный момент мы имеем реализованный набор самых важных сервисов, который составляет большую часть базовых возможностей платформы. Но о них немножко позже. Изначально рассмотрим архитектуру платформы.
Схематическое представление платформы в Сети
Внутренняя сеть Hivext
Сервера СУБД — базы данных приложений, хранение типов, объектов и других данных.
Сервера приложений — вычислительные ресурсы, поддержка бизнес логики приложений, сервисов, файловые ресурсы приложений.
Сервера web-сервисов — сервисы платформы с разделением по пространствам имен (пользователи, данные, безопасность, разработка, хранилища).
www-сервера проекта — документация, обратная связь с разработчиками.
Внешняя сеть
Разработчики — создание новых приложений, расширение сервисов платформы.
Пользователи сети — аудитория использующая веб-приложения.
Внешние www-сервера — ресурсы приложений и данные могут размещаться (дублироваться) на внешних серверах.
Desktop-приложения — могут обмениваться данными через сервисы или хранить данные удаленно в базе (единый интерфейс записи/чтения упрощает обмен/хранение).
Мобильные устройства (портативные устройства) — приложения используют мощности платформы для решения задач поставленных разработчиком, что позволит создавать более функциональные приложения с минимальными затратами.
Особенности разработки
Для начала работы с платформой необходимо и достаточно
- Выбрать язык программирования, на котором будет разрабатываться приложение;
- Делать требуемые http запросы (например, через готовые библиотеки);
- Редактор кода.
На сервере документации имеется более детальное описание (Н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 — сама галерея картинок, работающая на сервисах платформы.
Пока еще девственный скриншот галереи.
Текущий статус и направления развития
На недавно состоявшейся в Киеве конференции CodeCamp 2009 был представлен доклад про Hivext. Слушатели были приятно изумлены и заинтригованы предлагаемым подходом к построению приложений. Судя по большому количеству общих и персональных вопросов разработчикам понравилась концепция платформы.
В течении ближайших двух недель планируется запустить приватную бета версию сервиса, о чем будет сообщено дополнительно. Вы сможете персонально оценить простоту и в то же время мощность концепции платформы Hivext. В дальнейшем планируется максимально стабилизировать работу текущих сервисов, а также добавить еще несколько очень важных и необходимых сервисов. Каких? Скоро узнаем.
Документация по платформе
API Консоль (в ней же можно зарегистрироваться и «похимичть» с сервисами платформы)
И напоследок, открыт форум forum.hivext.ru — пишите, будем рады общению, на все вопросы последуют оперативные ответы.
Всех благ.