Разработка контрактов WCF (Операция / Данные)

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

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

Первый принимает информацию о клиенте и хранит информацию и возвращает цитату.

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

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

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

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

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

Quote CreateQuote(Quote quote);

Quote AddQuoteItem(QuoteItem quoteItem);

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

Quote CreateQuote(QuoteRequest quoteRequest);

Quote AddQuoteItem(QuoteItemRequest quoteItemRequest);

1 ответ

Решение

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

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

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

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