1

我目前正在寻求设计一些 WCF 服务,并希望获得社区对处理操作/数据合同的最佳方式的意见。

我有 2 个基本操作合同,第一个创建报价,第二个在报价中添加项目(并在幕后计算总数)。

第一个接收客户信息商店信息返回报价

第二个接受报价项目对象,计算总数并返回项目的报价

我的问题是关于如何在这种情况下设计数据合约?

对于CreateQuote,应该传入一个带有客户属性和商店属性集的报价对象,还是应该有某种包含客户和商店对象但没有传入报价对象的 QuoteRequest 对象?

对于AddQuoteItem,是否应该使用包含 Quote 对象的必需属性集传入 QuoteItem 对象,或者是否应该存在具有 Quote 对象和 item 对象(没有关系)的 QuoteItemRequest 对象,然后使用 QuoteItem 对象重新计算 Quote回来?

换句话说,它们应该看起来像这样吗?

Quote CreateQuote(Quote quote);

Quote AddQuoteItem(QuoteItem quoteItem);

或者他们应该看起来像这样?

Quote CreateQuote(QuoteRequest quoteRequest);

Quote AddQuoteItem(QuoteItemRequest quoteItemRequest);
4

1 回答 1

2

我认为将它们包装在请求/响应包装器中可能证明有点多余。您始终可以假定 WCF 服务方法的参数是“请求”,而返回类型是“响应”。

在您的方案中,将 Customer 类型和 Store 类型传递给 CreateQuote 方法并返回 Quote 类型。然后传递一个 Quote 类型并再次将您的 Quote 类型返回给 AddQuoteItem 方法,或者返回一个表示成功的布尔值。

同样在您的场景中,您的请求/响应类将只是围绕单一类型的一级包装器。我只能设想一个场景,您将返回一个响应式类以将多种不同类型包装在方法的单个返回值中。

于 2010-06-25T15:01:15.460 回答