Process-centric Services
Intermediary Services (Промежуточные сервисы)
Эти сервисы могут быть охарактеризованы как stateless сервисы, которые необходимы для интеграции различных технологических платформ и различий в архитектуре. Несмотря на то, что многие промежуточные сервисы могут показаться чисто техническими, они носят ярко-выраженную ориентированность на бизнес логику и являются довольно специфичными для конкретного проекта.
Выделяют следующие виды промежуточных сервисов.
Technology Gateways
Их основная задача состыковывать различные технологии. Они функционируют как посредники и предоставляют услуги сервиса в необходимой технологической среде. Примером такого сервиса-шлюза может быть обёртка над протоколом терминала, когда необходимо представить унаследованное терминальное приложение в виде сервиса. Подобный сервис будет эмулировать нажатие кнопок на терминале и оборачивать результат вывода на экран в виде сообщений XML.
Adapters
Адаптеры отображают сигнатуры и форматы сообщений одного сервиса на сигнатуры и форматы сообщений другого. Иными словами, адаптеры функционируют как простые трансляторы.
Facades
Задачей фасадов является предоставление альтернативного интерфейса (возможно агрегированного) нижележащих сервисов. Тем самым фасыды часто работают в роли адаптеров и сервисов-шлюзов (gateways).
Functionality-Added Services
В некоторых случаях появляется необходимость добавить некоторую функциональность к уже существующему сервису не меняя его. В этом случае functionality-added service может используя существующий сервис, или несколько сервисов, и не изменяя его, добавить новую дополнительную функциональность. Этому может быть несколько причин: существующий сервис может предоставляться третей стороной и у вас может не быть контроля на ним, можно использовать такой подход как некий эволюционный шаг на пути к альтернативному выделению базовых сервисов.
Такие сервисы инкапулируют знания о бизнес процессах организации. Они могут контролировать состояние бизнес процесса, т.е. являются stateful. С технической точки зрения такой тип сервисов является наиболее сложным в реализации. Этот тип сервисов привносит, помимо сложности и дополнительных расходов, в архитектуру следующие положительные моменты:
- Инкапсуляция сложностей бизнес процесса. С помощью таких сервисов можно полностью переложить управление бизнес процессов с application frontend’ов на них, тем самым разгрузив интерфейсную часть системы (например GUI).
- Позволяют проводить балансировку нагрузки.
- Позволяют строить многоканальные приложения (multi-channel applications). Например можно построить приложение, в котором контролировать ход выполнения одного и того же экземпляра бизнес процесса можно как через Web UI, так и через Rich Client GUI.