
Классификация сервисов
Для удобства сервисы классифицируют по следующей схеме:
Application frontends – хотя они и не являются сервисами, они являются неотъемлимой частью SOA. Они инициируют все бизнес процессы и получают конечный результат. Типичными примерами application frontend’ов являются GUI или batch (пакетные) процессы.
Basic services – являются фундаментов в SOA. Они представляют основные элементы вертикального домена. Базовые сервисы могут быть дата- или логик- ориентированные.
Intermediary services – разделяются на технологические шлюзы (technology gateway), адаптеры, фасады и сервисы добавляющие функциональность (functionality-added services). В отличие от process centric services промежуточные сервисы не содержат состояния (stateless).
Process centric services – инкапсулируют знания о бизнес процессе организации. Этот тип сервисов как правило поддерживает состояния, т.е. является stateful.
Public enterprise services – предоставляют интерфейсы для взаимодействия между предприятиями. По эти причинам они как правило менее детализированы (coarse-grained) и предоставляют такие необходимые механизмы как безопасность (security), биллинг (billing) и отказоустойчивость.
Выделенные типы сервисов обладают радом различающихся характеристик.
|
Basic services |
Intermediary services |
Process-centric services |
Public enterprise services |
Описание |
Простые дата- или бизнеслогика- ориентированные сервисы |
Технологические адаптеры, мосты и фасады (adapters, façades, gateways) |
Инкапсулируют логику процесса |
Сервис, разделяемый с другим предприятием или партнёрами |
Сложность реализации |
От низкой до средней |
От средней до высокой |
высокая |
Зависит от конкретного сервиса |
Управление состоянием (state management) |
Нет (stateless) |
Нет (stateless) |
Да (stateful) |
Зависит от конкретного сервиса |
Переиспользуемость (reusability) |
высокая |
низкая |
низкая |
Высокая |
Частота изменений |
низкая |
От умеренной до высокой |
высокая |
низкая |
Обязательно для архитектуры SOA |
да |
нет |
нет |
Нет |
Basic Services
Базовые сервисы являются основным компонентом в архитектуре SOA. Они являются простыми сервисами и не поддерживают состояние. Различают два вида базовых сервисов – дата- и логика-ориентированные. В действительности, это различие весьма условное и граница между типами сервисов достаточно прозрачная. Деление на эти два подтипа обусловлено чисто академическими принципами.
Сервисы ориентированные на данные (data oriented services)
Их основной задачей является предоставление услуг по сохранению и поиску данных, блокировка и поддержка транзакций. В чистом виде такие сервисы не предоставляют никакой бизнес логики по обработки этих данных., за исключением, возможно бизнес валидации. Основным отличием от технических сервисов обработки данных является их вертикальное выделение. В то время как обычные технические сервиса (например Data Access Layer) предоставляют услуги по работе с абстрактными данными для всей системы (или приложения), бизнес сервисы предоставляют услуги по сохранению лишь связанной группы сущностей, например, заказ на поставку товара. Как следствие большое приложение требует наличия нескольких data-centric service’ов.
Одной из основных задач создания SOA архитектуры является выделение основных сущностей, наподобие того, как это делается в ER-моделях (сущность-связь). Однако, важно понимать, что полученные сущности являются лишь входными и выходными данными для сервисов. Важным отличием является то, что сервисы не могут содержать взаимосвязи друг на друга, как это можно сделать, например, в связанном графе объектов.
Проектирование data-oriented сервисов порождает ряд проблем, с которыми разработчики не сталкиваются при проектировании единой монолитной схемы данных. Это проблема владения данными. Т.е. в данном случае - какую сущность отнести к какому сервису. Сразу возникает ряд связанных проблем с распределением транзакционности.
Logic-centric Services
Такие сервисы инкапсулируют сложную обработку бизнес правил или вычислений. В традиционных приложениях этот тип функциональности, как правило, сосредоточен в библиотеках классов. Сервисы бизнес логики пользуются услугами сервисов данных и других сервисов бизнес логики, что в результате даёт возможность группировать эти сервисы и строить довольно сложные конфигурации вычисления бизнес правил.