Принцип детализации сервиса - Service granularity principle

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

Определение

Гранулярность службы - это проблема домена приложения (детализация бизнеса), также как и программный интерфейс проблема дизайна (техническая детализация); это собственность службы договор предоставлен поставщиком услуг. Это относится к семантике и синтаксису содержимого сообщений in (запрос) и out (ответ), которые можно рассматривать как экземпляры двух общих Шаблоны корпоративной интеграции, Командное сообщение и Сообщение документа. По определению, операция крупномасштабного сервиса имеет более широкую сферу применения, чем детализированный сервис, хотя термины являются относительными. Первый тип обычно требует повышенной сложности дизайна, но может уменьшить количество вызовов, необходимых для выполнения задачи.[1]

Критерии

Из-за заблуждения распределенных вычислений, найти адекватную детализацию сложно.[2] Нет однозначного простого ответа, но существует ряд критериев (см. Ниже). Основная цель моделирования сервисов и детального проектирования - достичь Слабая связь и модульность, которые являются двумя основными принципами SOA,[3] и обратиться к другим архитектурно значимые требования.

На гранулярность обслуживания влияют многие факторы;[4] Четыре особо важных фактора, которые следует учитывать при разработке для обеспечения адекватной детализации, - это производительность, размер сообщения, транзакционность и бизнес-функция:

Бизнес-функция

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

Спектакль

Доступ к веб-службам осуществляется удаленно, и вызовы операций с веб-службами создают дополнительные сетевые издержки. Уменьшение количества запросов на обслуживание снижает эти накладные расходы.

Размер сообщения

Крупнозернистые службы могут передавать больше данных, чем мелкие, включая данные, которые специально не требуются для выполнения задачи. Это усложняет обработку сообщений в конечной точке и, в свою очередь, может снизить производительность. Для уменьшения размера сообщения может потребоваться добавление более тонкой операции.

Характеристики качества обслуживания, включая транзакционность

Для концептуальной ясности каждая операция службы должна выполнять одну транзакцию на системном уровне и оставлять целостность данных через границы службы бизнес-логике потребителя службы. Это также упрощает исправление ошибок и, как правило, упрощает дизайн.

Существует гораздо больше критериев выбора для поиска подходящей степени детализации; глобального оптимума не существует. Шестнадцать таких критериев связи собраны из литературы в.[5]

Узоры

Поскольку один размер не подходит для всех, при проектировании гранулярностей служб можно использовать множество существующих шаблонов для различных типов распределенных систем, особенно связанных со службами, а также шаблонных работ, связанных с дизайном API (например, дизайн API в объектно- ориентированное программирование) и корпоративная интеграция. Дается обзор таких языков. здесь.

Рекомендации

  1. ^ Йосуттис, Н. (2007). SOA на практике. Севастополь, Калифорния, США: О'Рейли. ISBN  978-0-596-52955-0.
  2. ^ Ф. Лейманн Слабое соединение и архитектурные последствия, Основной доклад ESOCC 2016
  3. ^ Крафциг, Д., Банке, К., Слама, Д. (2004). Корпоративная SOA: лучшие практики сервис-ориентированной архитектуры, 1-е издание. Prentics Hall. ISBN  978-0131465756.
  4. ^ Страница 21 в Циммерманн, О., Руководящие модели и инструменты для принятия решений для проектирования SOA, облака и аутсорсинга, http://resources.sei.cmu.edu/asset_files/Presentation/2011_017_001_24654.pdf
  5. ^ Service Cutter: A Systematic Approach to Service Decomposition, M Gysel, L. Kölbener, et al., Европейская конференция по сервис-ориентированным и облачным вычислениям, 185-200, (PDF )

внешняя ссылка