我做了一些研究,我认为上面的答案对 wsdl 接口设计提出了相当狭隘的看法。将我的问题的示例 Insert 和 Update 结合到 Set 中,以根据数据推断完成的操作是愚蠢的(检查 id 或类似内容是否填充了请求消息)。所以在那种情况下它很糟糕,因为界面并没有真正说明会发生什么。拥有 2 个单独的操作更加清晰,并且不会消耗更多资源。
然而,组合操作可能是一种正确的做事方式。想想我的分层数据示例:需要 13 次请求才能拥有一辆有 4 个座位且所有座位都有扶手的汽车。所有过境点都应该是昂贵的。所以这个可以组合成单一的操作。
例如阅读:
这是 Crudy 反模式吗?
和
http://msdn.microsoft.com/en-us/library/ms954638.aspx
你会发现你上面的答案肯定是过于简单化了,所有的编程原则都不能自动应用到 Web 服务界面设计中。
上面 SO-answer 中的好例子是创建 1st order 标头,它们带有单独请求的 orderitems 是不好的,因为例如它可能很慢且不可靠。它们可以组合成
PlaceOrder(invoiceHeader, List<InvoiceLines>)
所以答案是:这取决于你在结合什么。太低级的 CRUD 有点不可行,但也不应该组合不需要组合的东西。此外,使用清晰的消息结构定义清晰的界面,直接告诉将要做什么是这里的关键,而不是将其简单地定义为多个/单个。
-马蒂