Разработка контрактов WCF (Операция / Данные) - PullRequest
1 голос
/ 25 июня 2010

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

У меня есть 2 базовых контракта на операции, первый создаетцитата , а вторая добавляет элемент в цитату (и вычисляет итоги за сценой).

Первая получает информацию о клиенте и информация о магазине и возвращает цитату .

Второй получает цитату и объект item , вычисляет итоги и возвращает цитату с элементом .

Мой вопрос о том, как спроектировать контракты данных в этом сценарии?

Для CreateQuote , следует ли передать объект цитаты со свойством customer и свойством store или установить там?быть неким объектом QuoteRequest, который содержит объект customer & store, но без переданного объекта цитаты?

Для AddQuoteItem , если объект QuoteItem должен быть передан с необходимыми свойствами, включающими объект Quote, или должен существовать объект QuoteItemRequest, имеющий объект Quote и объект item (безотношение), а затем возвращается пересчитанная цитата с объектом QuoteItem?

Другими словами, должны ли они выглядеть примерно так?

Quote CreateQuote(Quote quote);

Quote AddQuoteItem(QuoteItem quoteItem);

Или они должны выглядеть примерно так?

Quote CreateQuote(QuoteRequest quoteRequest);

Quote AddQuoteItem(QuoteItemRequest quoteItemRequest);

1 Ответ

2 голосов
/ 25 июня 2010

Я бы сказал, что оборачивать их в обертки запрос / ответ может оказаться немного лишним.Вы всегда можете предположить, что параметры методов службы WCF - это «запрос», а тип возврата - «ответ».

В вашем сценарии передайте тип Customer и тип Store в метод CreateQuote и верните цитатутип.Затем передайте тип Quote и снова верните свой тип Quote или значение bool, указывающее на успешность, в метод AddQuoteItem.

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

...