我们应该根据什么来决定是否必须为我的 WCF 服务创建 dataContract 或 MessageContract。

我所知道的是,当我们需要对 SOAP 进行更多控制时,我们使用 MessageContract。

其次,我看到了一些代码,其中通过 MessageContract 公开了 DataContract。它的用途是什么。

请提供一些真实的生活场景。

最佳答案

这不是一个“非此即彼”的问题——如果您正在处理复合数据(不仅仅是 int、string 等的基本类型),您将始终拥有数据契约。那是给定的。

如果您需要非常密切和非常具体地控制 SOAP 消息的布局,您将永远需要消息契约。在大多数情况下,超过 90% 的时间 - 你没有。

消息契约允许您明确说明哪些元素(标量类型或复合类型作为 DataContracts)将在 SOAP header 中,哪些将在 SOAP 正文中。

如果您有一个需要非常特定格式的通信伙伴并且您必须调整您的 SOAP 消息以完全匹配给定的布局,您可能需要这个。当您需要并且应该使用消息契约时,这几乎是唯一有效的场景。

所以,长话短说: 总是 使用数据契约,实际上从不使用消息契约(除非你绝对,肯定必须)。

马克

关于wcf - 我应该什么时候使用数据契约(Contract),什么时候在 WCF 中使用消息契约(Contract),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1533391/

10-10 13:21