|
Технология Клиент-Сервер 1999'1
|
|
Репозитарий приложений - ядро
компонентной архитектуры ProFIX
Максим Щербинин
начальник отдела перспективных разработок
Данная статья представляет собой
описание компонентной архитектуры компании ProFIX
и ее центрального звена - репозитария приложений,
а также реализованных в ее рамках коммерчески
доступных решений.
Компонентная архитектура ProFIX
Сравнительно недавно программная индустрия
перешла от объектно-ориентированного к
компонентному программированию. Системы быстрой
разработки приложений (RAD) представляют собой
наборы готовых интерфейсных (и не только)
компонентов + тот или иной
объектно-ориентированный язык, предназначенный
для связывания и управления компонентами. Нечто
подобное наблюдается и в области готовых решений
- промышленных систем управления данными уровня
предприятия. Здесь, как и в первом случае, мы
видим, что системы разворачиваются на базе той
или иной компонентной архитектуры. В
соответствие с традициями отрасли образуется
два основных лагеря разработчиков:
- Приверженцы открытых стандартов (CORBA, COM, Java Beans)
- Сторонники патентованных архитектур
(компонентная архитектура SAP)
И хотя будущее за первыми - вторые имеют на
сегодняшний день в своем активе больше
законченных решений промышленного уровня. Кроме
того, второе не исключает первого. Все как один,
производители готовых систем на базе
собственных стандартов заявляют об открытости API
и о поддержке в своих продуктах тех или иных (а то
и всех сразу) компонентных архитектур,
претендующих на титул "открытый промышленный
стандарт".
Ключевым звеном компонентной архитектуры
является "диспетчер компонентов", в функции
которого входит поддержка хранилища
компонентов, управление очередями компонентов,
балансирование нагрузки и так далее. Многие
поставщики ПО предлагают собственные диспетчеры
компонентов (сервера приложений). Чаще всего, это
впечатляющее, сложное и чрезвычайно дорогое ПО.
Следование общеотраслевым тенденциям для
отечественных разработчиков не обошлось без
некоторых особенностей
положительных:
- Отсутствие груза унаследованных систем
- Мобильность и класс разработчиков
- Сравнительно небольшие объемы данных, которыми
предстоит управлять законченным системам
и отрицательных:
- Недопустимая цена (не для разработчиков, а для
большинства возможных заказчиков) промышленных
серверов приложений (цена готового продукта
определяется по формуле: СУБД + сервер приложений
+ собственно система, при этом цена двух первых
компонентов, в наших условиях, значительно
превышает цену последнего)
- Незначительные ресурсы, отпущенные на циклы
отладки и тестирования (часто системы
разворачиваются "с колес")
- Ограниченность и нестабильность рынка как
такового
Эти и другие факторы определяют лицо
отечественных систем управления данными уровня
предприятия:
- Системы строятся на базе, слава Богу,
промышленных СУБД
- Преимущественно двухуровневая архитектура с
"толстым сервером" и "толстым клиентом"
- Повсеместное использование собственного
инструментария (языки программирования,
"диспетчеры компонентов" и так далее)
Компонентная архитектура компании ProFIX,
работающей на рынке Украины более трех лет, имеет
следующие черты:
- Архитектура не существует вне конкретных
систем (финансовые приложения для банков и
корпораций)
- Компоненты хранятся в специальном репозитарии
- Физически репозитарий представляет собой набор
таблиц INFORMIX и взаимодействующий с ними
инструментарий на клиентской стороне
- Компоненты разделяются на клиентские и
серверные
- Законченные системы являются скорее
двухуровневыми. Основная бизнес логика
реализована на хранимых процедурах INFORMIX. При
этом существуют специализированные сервера
приложений, которые представляют собой набор
серверных компонентов, взаимодействующих друг с
другом, с сервером БД и с клиентом.
- Клиентская часть предназначена для
визуализации данных и представляет собой набор
динамически загружаемых и взаимодействующих
друг с другом, с сервером БД и серверами
приложений компонентов.
Компоненты со стороны клиента
Клиентская компонентная архитектура получила
в компании название ProFIX/PlugIns. Клиент представляет
собой небольшую оболочку (~ 40 Kб) содержащую API для
динамической загрузки, выгрузки и управления
компонентами и контейнер компонентов. Оболочка
является единственным исполняемым файлом со
стороны клиента. Компоненты могут быть:
- Бинарными (динамические библиотеки, пакеты Delphi,
COM объекты)
- Реализованными на том или ином языке скриптов
(ProFIX/Script, Pascal Script, VBScript, JScript)
Бинарные компоненты хранятся в своем
естественном виде на сервере и по запросу
динамически загружаются и выгружаются из памяти.
Таблицы сервера БД содержат ссылки на бинарные
компоненты. Компоненты реализованные на языках
скриптов хранятся в таблицах сервера БД. В
функции оболочки входит формирование внешнего
вида интерфейса (системы меню и инструментальных
панелей) на основании информации о
зарегистрированных компонентах, правах доступа
и функциях приложения. Размер бинарного
компонента, как правило, не превышает 50 Кб, что
облегчает его загрузку с корпоративного сервера,
где бы он не находился. Естественно на клиентской
стороне располагаются гораздо более массивные
run-time модули и библиотеки доступа к БД. И те и
другие устанавливаются один раз и не изменяются
в течении всего жизненного цикла приложения.
Компоненты со стороны сервера
В рамках выбранной нами архитектуры, большая
часть бизнес логики реализуется средствами
хранимых процедур сервера БД (INFORMIX ONLINE). Вся
функциональность, которая находится за рамками
возможностей языка хранимых процедур
,сосредоточена в специализированном сервере
сообщений (ProFIX/MessageServer). Сервер сообщений
представляет собой набор тесно связанных
серверных компонентов, компилируемых под
целевую платформу (используется только ANSI C).
Структуру сервера можно условно представить
следующим образом:
Протокол
взаимодействия с сервером БД |
Процессор форматов
сообщений |
Протокол
взаимодействия с клиентскими приложениями |
Прикладная логика
сервера |
Процессор очередей
сообщений |
Сервер безопасности
(электронная подпись, шифрование, управление
ключами, архивирование) |
Интерпретатор ProFIX/Script |
Библиотека доступа к
серверу БД |
Рисунок 1. Структура сервера
сообщений
Весьма поверхностно, работу служб (компонентов)
сервера сообщений можно иллюстрировать
следующим образом:
Процессор очередей сообщений непрерывно
проверяет источники поступления сообщений
(каталоги файловой системы, каналы, и так далее),
дожидаясь сообщений от других взаимодействующих
систем (например, электронной почты). При
получении, сообщение разбирается процессором
форматов сообщений и идентифицируется
прикладной логикой как сообщение определенного
типа. В зависимости от типа, процессор форматов
сообщений во взаимодействие с библиотекой
доступа к БД и прикладной логикой трансформирует
сообщение в сообщение другого типа (если это
необходимо) и формирует транзакции на сервере БД.
Процессор очередей сообщений, во взаимодействии
c прикладной логикой и библиотекой доступа к БД
формирует очереди выходных сообщений, которые
выгружаются посредством процессора форматов
сообщений.
Сервер сообщений взаимодействует с сервером БД
через библиотеку доступа к БД посредством вызова
хранимых процедур. Настройка на форматы
сообщений и синтаксис вызова хранимых процедур
происходит на уровне специализированного
тегового языка.
Клиентские приложения взаимодействуют с
сервером сообщений через специальный табличный
протокол и могут управлять им при помощи команд,
прерывающих временно основной цикл,
определяемый прикладной логикой.
Функции двух других компонентов, входящих в
состав MessageServer более очевидны:
- Сервер безопасности - набор функций и
автоматически работающих механизмов, отвечающих
за безопасность транзакций в конкретной
прикладной системе
- Интерпретатор ProFIX/Script - аналогичен встроенному
в клиентские компоненты. Программы на ProFIX/Script
исполняются сервером сообщений в соответствие с
расписанием и как реакция на определенные
события (например, поступление очередного
сообщения). Программы хранятся в таблицах
сервера БД и доступны для редактирования с
клиентской части.
В том случае если клиент и сервер сообщений
работают на разных платформах (например, Windows и
UNIX) они взаимодействуют при помощи специального
табличного протокола, в противном случае (клиент
и сервер расположены на одном компьютере) -
клиент использует API сервера сообщений для
управления соответствующими службами сервера
сообщений.
Языки скриптов - связующее звено
между компонентами
Коротко роль языков скриптов в компонентой
архитектуре ProFIX можно охарактеризовать
следующим образом:
- При помощи программ, написанных на языках
скриптов расширяется функциональность как
клиентской так и серверной части
- Языки скриптов используются для управления
бинарными компонентами (вызов методов и
изменение свойств)
- Программы на языках скриптов позволяют
связывать компоненты друг с другом (визуально)
Поддерживаются следующие языки:
- ProFIX/Sctipt - простой, SQL-подобный язык,
интерпретатор которого включен как в диспетчер
компонентов клиентской части, так и в сервер
сообщений. Предназначен для управления данными в
стиле SQL
- Object Pascal/Script - интерпретатор Object Pascal. Реализован
только со стороны клиента. Предназначен для
формирования интерфейса и управления другими
компонентами
- VBScript и JSctipt - подключены при помощи интерфейса
Windows Script Host (естественно только со стороны
клиента)
Программы на языках скриптов хранятся в
таблицах сервера БД и редактируются средствами,
входящими в состав (с клиентской стороны) ядра
компонентной архитектуры ProFIX - "репозитария
приложений".
Репозитарий приложений
Как следует из названия - речь пойдет о
хранилище приложений (компонентов). Коротко
перечень функций репозитария выглядит следующим
образом:
- Хранение компонентов в базе данных
- Представление (на клиенте) иерархии компонентов
в виде древовидной структуры
- Визуальный инструментарий для описания и
подключения компонентов
- Взаимодействие с контейнером компонентов (на
клиенте) для формирования визуального
интерфейса и управления операциями
загрузки/выгрузки бинарных компонентов
- Взаимодействие с подключенными
интерпретаторами языков программирования (на
клиенте и на сервере) для выполнения хранящихся в
репозитарии скриптов
Остановимся более подробно на перечисленных
пунктах.
Хранение компонентов в базе данных
Как уже говорилось ранее, физически, компоненты
(или ссылки на компоненты) хранятся в таблицах БД
Informix. Набор таблиц позволяет описывать:
- Иерархию компонентов
- Ссылки на месторасположение бинарных
компонентов
- Параметры компонентов
- Скрипт, связанный с компонентом
- Форму (в формате Delphi DFM), связанную с компонентом
и скриптом
- Расписание выполнения скрипта, связанного с
компонентом
- Место компонента в интерфейсе программы
(подключение в меню, в пользовательскую
инструментальную панель, к другому компоненту)
- Связь между расширением файла и
соответствующим компонентами для просмотра и
редактирования данного файла (например
расширение QR2 связанно с компонентами loader.bpl и
editor.bpl, представляющими собой генератор отчетов)
- Права доступа к компоненту
Визуальный инструментарий для подключения и
описания компонентов
Визуальный инструментарий располагается,
естественно, на клиенте и включает в себя:
- Окно для отображения иерархии компонентов в
виде древовидной структуры
- Форму для описания параметров компонента и
редактирования скриптов, связанных с
компонентом (поддерживается syntax highliting)
- Инструмент для визуального проектирования форм
методом drag&drop в стиле Delphi (выполнен в виде
компонента)
- Генератор отчетов (выполнен в виде компонента)
- Инструмент составления расписания (или
связывания с определенным событием) для
скриптов, выполняемых на сервере
- Инструменты для определения места компонента в
структуре интерфейса
- Редактор прав доступа (выполнен в виде
компонента и интегрирован в инфраструктуру
редакторов прав доступа к другим элементам
системы)
Взаимодействие с контейнером компонентов (на
клиенте)
В функции клиентской части репозитария
приложений входит автоматическое формирование
внешнего вида интерфейса (добавление пунктов
меню и кнопок на пользовательской
инструментальной панели) при регистрации в
системе, на основании информации о
зарегистрированных компонентах и правах
доступа. Контейнер компонентов, в свою очередь
ответственен за их загрузку в память и
освобождение памяти. API модулей PlugIns и контейнера
компонентов, взаимодействуя друг с другом
позволяют исполнять следующие типы бинарных
компонентов:
- MDI Child и немодальные окна , выполненные в виде
пакетов Delphi и предполагающие возможность
множественной загрузки (в память может быть
одновременно загружено несколько форм,
принадлежащих к определенному классу)
- MDI Child и немодальные окна, выполненные в виде
пакетов Delphi и предполагающие возможность
одиночной загрузки (в память может быть
загружена только одна форма, принадлежащая к
определнному классу)
- Модальные окна, выполненные в виде пакетов Delphi
- Невидимые резидентные объекты, выполненные в
виде пакетов Delphi (например, монитор событий)
- Модальные окна, выполненные в виде динамических
библиотек
- Формы AciveX
Бинарные компоненты могут визуально
подключаться друг к другу (например, через
локальное меню). При этом, подключенный компонент
наследует источники данных (DataSouce).
Взаимодействие с интерпретаторами языков
программирования (на клиенте и на сервере)
Все используемые в системе интерпретаторы
языков программирования взаимодействуют с
репозитарием приложений уже хотя бы потому, что
скрипты хранятся в таблицах БД, составляющих
основу репозитария. В общем случае (касается и
клиента и сервера) все это выглядит следующим
образом:
- При выборе соответствующего пункта меню
(наступлении соответствующего события)
контейнер компонентов (сервер сообщений)
загружает скрипт из репозитария в память
- Скрипт распознается как один из четырех
зарегистрированных типов скриптов
- В случае необходимости (только клиент), на
основании связанных со скриптом параметров,
автоматически (или по ранее описанному
прототипу) создается форма для ввода параметров
- После ввода параметров (если таковой имел место)
подключается соответствующий интерпретатор и
скрипт начинает выполняться
- В ходе выполнения скрипта (только клиент) на
экране могут появляться формы, содержащие некие
данные (например результат выполнения запроса). В
дальнейшем с данными могут быть произведены
определенные манипуляции: выполнена
произвольная сортировка, рассчитаны средние и
суммарные значения для столбцов. Данные могут
быть визуализированы в виде графика.
Решения
На сегодняшний день существует три коммерчески
доступных программных продукта, реализованных с
использованием "компонентной архитектуры
ProFIX":
Расчетная палата коммерческого банка
Расчетная палата устанавливается в головном
офисе банка и предназначена для решения
следующих задач:
- Реализация такой модели единого
корреспондентского счета в Национальном банке,
при котором все внешние платежи филиалов
проходят через головной офис банка. Существует
гибкая система управления платежами при помощи
бинес правил
- Связь с внешними платежными системами
(национальная платежная система, SWIFT, Telex и так
далее)
- Сбор отчетности от филиалов и анализ
консолидированной информации
- Рабочее место менеджера высшего звена
(специальные табло с контрольными цифрами,
изменяющимися в реальном времени)
В рамках данного программного продукта
существует около 20 приложений, выполненных в
виде клиентских и серверных компонентов (в том
числе и силами клиентов компании ProFIX). На момент
написания данной статьи расчетная палата
установлена в четырех достаточно крупных банках
Украины
В качестве примера можно привести реальные
технические параметры системы, установленной в
одном из коммерческих банков:
- Количество филиалов - 5
- Количество внешних документов в день - 3000
- Общее количество документов - 10000
- Количество счетов - 7000
- Количество клиентов - 1500
- Время прохождения документа по системе (филиал
платит другому банку) - 30 минут
- Количество пользователей - 40 (из них 20 на
удаленой площадке)
- Платформа сервера БД (INFORMIX 7.2) - SCO UNIX 5.x
- Платформа сервера сообщений (C, ESQL/C) - SCO UNIX 5.x
- Платформа клиента - Windows NT WS 4.x
Информационная система головного управления
железной дороги
Программный продукт установлен в Главном
вычислительном центре железной дороги Украины и
предназначен для решения следующих задач:
- Сбор информации о движении по расходным и
доходным счетам подразделений железной дороги
- Специализированая отчетность
- Рабочее место менеджера высшего звена
(специальные табло с контрольными цифрами,
изменяющимися в реальном времени)
Система в полностью автоматическом режиме
собирает информацию из различных источников. В
соответствие с регламентом и по запросам
пользователей формируются отчеты,
представляющие интерес для финансового
управления, ,бухгалтерии и управляющих разного
уровня.
Источники информации:
- Национальная платежная система
- Банки, в которых открыты счета подразделений
железной дороги
В рамках данного программного продукта
существует 15 приложений, выполненных в виде
клиентских и серверных компонентов (все
разработаны силами компании ProFIX).
Информационная система энергетической
компании
Данный программный продукт является последним
и самым новым, выполненным с использованием
"компонентной архитектуры ProFIX". Система
предназначена для решения следующих задач:
- Сбор информации о движении по всем счетам
энергетической компании
- Автоматическая (и в ручном режиме) разбивка
платежей на группы (например платежи "за
электроенергию")
- Расчет информации об остатках на всех счетах
- Сбор и анализ дополнительной информации от
подразделений (тарифные ставки, финансовая и
иная отчетность и так далее)
- Специализированная отчетность
- Рабочее место менеджера высшего звена
(специальные табло с контрольными цифрами,
изменяющимися в реальном времени)
Источники информации:
- Национальная платежная система
- Банки, в которых открыты счета подразделений
энергетической компании
- Подразделения компании
Реальные технические параметры системы,
установленной в региональной энергетической
компании:
- Количество подразделений - 30
- Количество отслеживаемых счетов - 75
- Количество документов в день - 4000
- Количество пользователей - 10
- Платформа сервера БД (INFORMIX 7.2) - DEC UNIX
- Платформа сервера сообщений (C, ESQL/C) - DEC UNIX
- Платформа клиента - Windows 9x
по материалам Informix Magazine/RE
Copyright © 1994-2016 ООО "К-Пресс"