Basic Services

Классификация сервисов

 

Для удобства сервисы классифицируют по следующей схеме:

  • 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 да нет нет Нет

 

 

Базовые сервисы являются основным компонентом в архитектуре SOA. Они являются простыми сервисами и не поддерживают состояние. Различают два вида базовых сервисов – дата- и логика-ориентированные. В действительности, это различие весьма условное и граница между типами сервисов достаточно прозрачная. Деление на эти два подтипа обусловлено чисто академическими принципами.

 

Сервисы ориентированные на данные (data oriented services)

 

Их основной задачей является предоставление услуг по сохранению и поиску данных, блокировка и поддержка транзакций. В чистом виде такие сервисы не предоставляют никакой бизнес логики по обработки этих данных., за исключением, возможно бизнес валидации. Основным отличием от технических сервисов обработки данных является их вертикальное выделение. В то время как обычные технические сервиса (например Data Access Layer) предоставляют услуги по работе с абстрактными данными для всей системы (или приложения), бизнес сервисы предоставляют услуги по сохранению лишь связанной группы сущностей, например, заказ на поставку товара. Как следствие большое приложение требует наличия нескольких data-centric service’ов.

 

Одной из основных задач создания SOA архитектуры является выделение основных сущностей, наподобие того, как это делается в ER-моделях (сущность-связь). Однако, важно понимать, что полученные сущности являются лишь входными и выходными данными для сервисов. Важным отличием является то, что сервисы не могут содержать взаимосвязи друг на друга, как это можно сделать, например, в связанном графе объектов.

 

Проектирование data-oriented сервисов порождает ряд проблем, с которыми разработчики не сталкиваются при проектировании единой монолитной схемы данных. Это проблема владения данными. Т.е. в данном случае - какую сущность отнести к какому сервису. Сразу возникает ряд связанных проблем с распределением транзакционности.

 

Logic-centric Services

 

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