Сервис онтологии Opengroup SOA в сравнении с интерфейсом сервиса и контрактом на обслуживание

Я пытаюсь понять определения в этом документе. http://www.opengroup.org/soa/source-book/ontologyv2/service.htm

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

Обслуживание:

"Сервис - это логическое представление повторяемой деятельности, которая имеет определенный результат. Он самодостаточен и является "черным ящиком" для своих потребителей ".

Допустим, у меня есть проект WCF, и у него есть два Operations StoreFront +GetPrice +AddToCart

Определение говорит "повторяемая деятельность". Так есть ли сервис StoreFront? Или у меня есть две службы (GetPrice и AddToCart).

Договор на обслуживание: имеет класс "эффекта". Является ли эффект "возвратная цена" и "добавлен в корзину"?

1 ответ

Решение

Из той же статьи:

" Возможность, предоставляемая одним объектом или объектами другим лицам с использованием четко определенных" условий и положений "и интерфейсов". (Источник: спецификация OMG SoaML - мой курсив)

По моему мнению, это предпочтительное определение, чем то, что говорит о "повторяемых действиях".

Ключевое слово в определении - способность. Capability относится к Business Capability, которое является переходом от BPM-индустрии, но в контексте SOA относится к бизнес-сфере с четкими границами.

Таким образом, из этого определения мы можем предположить, что сервисы должны быть доступны или работать в рамках бизнес-возможностей / процессов. Это приводит нас к идее (от принципалов или арендаторов SOA), что сервисы должны быть автономными в четко определенных границах.

В вашем примере вы спрашиваете

Так есть ли сервис StoreFront? Или у меня есть две службы (GetPrice и AddToCart)

Ответ на это, как всегда, "это зависит". Тем не менее, как правило, ценообразование (GetPrice) относится к бизнес-возможности, отличной от заказа (AddToCart). Кроме того, операции отличаются в некоторых других важных отношениях:

  • GetPrice - это операция чтения, а AddToCart - операция записи.
  • GetPrice является синхронной операцией, в то время как AddToCart вполне может быть асинхронной

Поэтому из них, вероятно, следует предположить, что это две разные услуги с точки зрения бизнеса.

Это предположение имеет некоторые радикальные последствия. Если это две службы, то согласно SOA они должны быть автономными. Это означает, что мы должны стремиться свести к минимуму связь между службами всеми возможными способами, чтобы как можно больше их можно было планировать, разрабатывать, тестировать, создавать, развертывать, размещать, поддерживать и управлять ими как отдельными задачами.

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

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

Я уже писал об этом материале, поэтому, пожалуйста, не стесняйтесь читать. Я бы рекомендовал прочитать отличную статью о микросервисах Льюиса и Фаулера.

Другие вопросы по тегам