WCF: отдельная услуга для каждого субъекта хозяйствования - PullRequest
4 голосов
/ 13 марта 2009

Если, например, у вас есть клиенты, заказы и товары. Вы создаете отдельную услугу для каждого из этих субъектов бизнеса?

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

Не могли бы вы сказать мне, как бы вы справились с этим? Каким-то образом нехорошо иметь услугу для любого субъекта предпринимательской деятельности…: - (

Заранее большое спасибо.

1 Ответ

6 голосов
/ 13 марта 2009

Услуги действуют на субъектов хозяйствования, но не являются субъектами хозяйствования.

Таким образом, заказчики, заказы и продукты будут контрактами на передачу данных, а не контрактами на обслуживание.

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

Если, как я думаю, вы, возможно, спросите, каждая сущность имеет общую функциональность (например, операции CRUD), тогда да, у вас должен быть отдельный контакт службы для службы CRUD для каждой сущности (CustomerCRUDService, OrderCRUDService и т. Д.), Поскольку службы не поддерживают перегрузки в сигнатурах методов.

(из комментариев)

Есть несколько способов.

1) Составные сервисные контракты: например, у меня есть сервис, который реализует WSTransfer - на самом деле он состоит из двух сервисных контрактов, IWSTransferResource и IWSTransferFactory. В свою очередь, у меня есть контракт на обслуживание IWSTransfer, который просто реализует эти отдельные контракты - открытый интерфейс IWSTransfer: IWSTransferResource, IWSTransferFactory

2) Но вам даже не нужно усложнять, реализация в WCF может реализовывать несколько сервисных контрактов - MyServiceImpl: IMyContract1, IMyContract2. Однако каждому контракту нужна отдельная конечная точка, поскольку конечные точки предназначены для договоров на обслуживание, а не для классов реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...