我目前正在寻求设计一些WCF服务,并希望得到社群对处理运营/数据合同的最佳方式的意见。
我有2个基本操作合约,第一个创建报价,第二个将一个项目添加到报价(并计算场景后面的总数)。
第一个接收客户信息和商店信息,返回报价。
第二个接受报价和项目对象,计算合计数,返回带项目的报价。
我的问题是如何在这种情况下设计数据合同?
对于 CreateQuote ,是否应该使用客户属性和商店属性集传入引用对象,或者是否应该存在某种包含客户&的QuoteRequest对象。存储对象但没有传入引用对象?
对于 AddQuoteItem ,应该使用包含Quote对象的必需属性集传递QuoteItem对象,还是应该有一个具有Quote对象和item对象的QuoteItemRequest对象(没有关系)然后返回带有QuoteItem对象的重新计算的引用?
换句话说,他们应该看起来像这样吗?
Quote CreateQuote(Quote quote);
Quote AddQuoteItem(QuoteItem quoteItem);
或者他们应该看起来像这样?
Quote CreateQuote(QuoteRequest quoteRequest);
Quote AddQuoteItem(QuoteItemRequest quoteItemRequest);
答案 0 :(得分:2)
我认为将它们包装在请求/响应包装器中可能会证明有点多余。您始终可以假定WCF服务方法的参数是“请求”,返回类型是“响应”。
在您的方案中,将Customer类型和Store类型传递给CreateQuote方法并返回Quote类型。然后传递一个Quote类型并再次返回你的Quote类型,或者返回一个指示成功的bool到AddQuoteItem方法。
再次在您的场景中,您的请求/响应类只是围绕单个类型的一级包装器。我只能设想一个场景,你会返回一个response-esque类来包装方法的单个返回值中的多个不同类型。