Технологии StellArt и EFFI
Платформа разработки приложений StellArt / EFFI
Современные сложные информационные системы обычно включают в себя большое количество разнородных компонентов. Всякий кто собирается заниматься разработкой такой системы и выбирает инструментальные средства, оказывается перед дилеммой. С одной стороны, можно подбирать отдельные средства для каждого вида задач; с другой ‑ можно воспользоваться единой средой разработки и использовать ее при решении всех задач. Оба подхода, очевидно, имеют свои преимущества и недостатки.
Мы решили, что для собственных разработок предпочли бы использовать единую платфоому, покрывающую все потребности разработки. Точнее говоря, нам нужна система для создания и развития достаточно сложных и больших приложений, которые могли бы запускаться в разных средах. Таким образом, мы сформулировали следующие требования к подобной платформе:
• Платформа разработки должна базироваться на стандартах, а не на конкретных продуктах. Это гарантировало бы нам стабильность и независимость от сторонних производителей программного обеспечения.• Поскольку рынок приложений формата "ПО как услуга" (SaaS - Software as a Service) активно развивается, мы занимаемся разработкой таких веб-ориентированных приложений. Платформа должна обеспечивать эту возможность.
• Среда разработки должна предоставлять возможности для создания приложений с удобным графическим интерфейсом, привычным для пользователей, которые работают с современными десктопными приложениями. Набор доступных элементов интерфейса должен включать в себя сложные и композитные элементы (всплывающие окна, подсказки, таблицы с прокруткой и т. п.).
• Разрабатываемые приложения должны успешно работать под разными браузерами и поддерживать бОльшую часть распространенных в настоящее время браузеров.
• Программное приложение, разрабатываемое на платформе, должно поддерживать персонализацию — после установки такого приложения разработчики, партнеры и пользователи должны иметь возможность модифицировать его и настраивать в соответствии со своими потребностями.
• Платформа должна обеспечивать режим виртуализации ("multitenancy") на системном уровне — должна быть возможность использования одного экземпляра приложения одновременно несколькими пользователями изолированно друг от друга.
• Что касается языков программирования, то мы бы предпочли пару C++ и JavaScript, так как такая комбинация покрывает все потребности программирования.
Ни одно из рассмотренных нами готовых решений не удовлетворяло полному набору наших требований, поэтому мы разработали собственную среду EFFI для создания приложений на C++. С одной стороны, эта платформа предоставляет полный набор совместимых средств разработки приложений. С другой стороны, отдельные части платформы — библиотеки и пакеты библиотек — могут использоваться изолированно.
Среда разработки EFFI обеспечивает удовлетворение основных требований, обычно предъявляемых к программным продуктам:
• Сопровождаемость - характеристика программного продукта, позволяющая минимизировать усилия по внесению в него изменений для устранения ошибок или для модификации в соответствии с изменяющимися потребностями пользователей.• Масштабируемость - способность системы увеличивать свою производительность при добавлении ресурсов и оставаться в работоспособном состоянии при уменьшении количества ресурсов.
• Доступность - доля времени, в течение которого система пребывает в функционирующем состоянии.
• Надежность - способность системы выполнять требуемую функцию в заданный период времени при заданных условиях.
• Защищенность - способность системы предотвращать несанкционированный доступ, использование, раскрытие данных, разрушения, изменения или уничтожения.
• Открытость - способность различных систем работать во взаимодействии друг с другом.
• Переносимость - свойство программного обеспечения, описывающее, насколько легко оно может быть адаптировано к другой среде, отличающейся от той среды, под которую оно было изначально написано.
• Расширяемость - возможность сравнительно лёгкого добавления в систему новых элементов.
• Модульность - свойство системы, которая может быть разделена на взаимодействующие компоненты.
Среда исполнения EFFI
На рисунке представлен общий подход к реализации веб-ориентированной информационной системы на платформе EFFI. Блоки представляют части программной инфраструктуры, а стрелки показывают запросы от одного компонента информационной системы к другому (ответы на запросы следуют в противоположном направлении).
Прикладное программное обеспечение на платформе EFFI использует классическую трехслойную логическую схему:
• Слой хранения данных• Слой обработки данных
• Слой представления данных
Распределённые сервисы соединяются посредством специального Брокера Запросов (Request Broker).
Пользователи работают с системой через стандартный интернет-обозреватель (Web Browser), который отрисовывает оконный интерфейс, удобный для пользователя (аналогичный знакомому всем пользователям ПК интерфейсу настольных систем) реализованный на JavaScript. Интернет-обозреватель посылает AJAX запросы к Контроллеру Презентационной Логики (GUI processor) либо непосредственно, либо через промежуточный веб сервер. Контроллер Презентационной Логики разбирает клиентские запросы и исполняет соответствующие этим запросам действия. Обычно действия это вызов какой-либо функции сервера приложений (Application Service) посредством запроса через Брокер Запросов.
Брокер Запросов авторизует каждый запрос через Сервер Авторизации (Authorization Service) и в случае разрешённого доступа перенаправляет запрос к наименее загруженному процессу Сервера Приложения. С технической точки зрения, Сервер Приложения это либо динамическая библиотека (.dll или .so), либо файл с текстом программы на JavaScript. Сервер приложений может выполнять любые действия внутри себя, обращаться с запросами к БД, читать данные из файлов или сессии пользователя и даже обращаться с новыми запросами к Брокеру Запросов.
Если Брокер Запросов не может найти ни одного обработчика запроса на том компьютере, где он установлен, он может (в соответствии с настройками и конфигурацией безопасности) отправить запрос к Модулю Сопряжения (Bridge). Модуль Сопряжения это специальный тип Сервера Приложения, который переводит запросы из внутреннего формата EFFI приложения в формат, понятный тому или иному удалённому сервису, и вызывает этот сервис. Количество форматов и протоколов, поддерживаемых Модулем Сопряжения, регулируются количеством соответствующих плагинов расширения.
На данный момент разработаны плагины, поддерживающие протоколы SOAP, HTTP, SMTP/POP, и внутренний протокол EFFI. Модуль Сопряжения двунаправленный, то есть может не только отсылать запросы к внешним системам, но и принимать запросы от них и передавать их Брокеру Запросов для последующей обработки.
Будучи обычными динамическими библиотеками, Серверы Приложений не имеют никакого внутреннего состояния (stateless), тем не менее информация о пользователе, запросившем исполнение действия, доступна через специальный сервис с собственной БД Сессионное Хранилище (Session Data Storage). Помимо информации о пользователе и его настройках, Контроллер Презентационной Логики сохраняет в Сессионном Хранилище информацию о текущем состоянии всех окон пользовательской сессии, что даёт возможность Серверу Приложений управлять их поведением.
Возможности интеграции
Приложения на платформе EFFI могут интегрироваться со сторонними системами через веб-сервисы, при этом возможна двусторонняя интеграция. С одной стороны, разработчик EFFI-приложения может реализовать взаимодействие с веб-сервисами внешних систем. С другой стороны, EFFI-приложения могут предоставлять собственные веб-сервисы; в этом случае платформа обеспечивает автоматизированное создание документов WSDL. (Типичный пример интеграции посредством веб-сервисов – работа с интернет-магазином, разработанным на языке php).
В среду EFFI включены библиотеки для интеграции с автоматическими телефонными станциями AVAYA, Panasonic и Asterisk по международным стандартам ECMA-323 (ECMA-285).
EFFI поддерживает протокол LDAP и предоставляет готовые средства для авторизации и аутентификации через службу каталогов Active Directory.
EFFI – кроссплатформенная среда разработки. EFFI-приложения могут быть скомпилированы на любой из операционных систем Windows, Linux и MacOS (а также на всех операционных системах одновременно).