数据合约与消息合约
Posted
技术标签:
【中文标题】数据合约与消息合约【英文标题】:DataContract vs Message Contract 【发布时间】:2011-05-06 08:12:23 【问题描述】:虽然我已经阅读了一些关于消息合约的 WCF 文章,但我无法理解消息合约的真正用途是什么。我可以使用MessageContract
代替DataContract
或作为DataContract
的补充吗?
【问题讨论】:
WCF: MessageContract, DataContract ... Confused?的可能重复 请查看此链接:sujitbhujbal.com/2012/05/… DataContract 是通过服务发送和接收的数据(类)的合同。 MessageContract 是一种(您可以选择)定义低级 SOAP 消息结构的方法。 (但你不必这样做,如果你有基本的数据消息可以忽略) 【参考方案1】:DataContract 是对您的服务公开和支持的类型的描述。 MessageContract 是对 SOAP 消息的抽象,允许您明确规定底层消息的结构。
它们旨在相互补充并服务于不同的目的。
【讨论】:
你能给我一些实现吗【参考方案2】:Marc Gravellanswered 类似问题WCF: MessageContract, DataContract ... Confused?
消息合约的优点之一是您可以设置隐私 反对成员,但在许多情况下,这不是必需的。在这样的 在这种情况下,我更愿意让合同尽可能简单,就像 数据合同。
【讨论】:
【参考方案3】:使用 DataContract,服务可以公开它交换的类型。但是交换的 XML (SOAP) 不受它控制(尽管受到影响)。虽然 MessageContract 可用于明确定义 XML(SOAP 消息)的结构。
【讨论】:
【参考方案4】:通常在构建 Windows Communication Foundation (WCF) 应用程序时,开发人员会密切关注数据结构和序列化问题,而无需关心承载数据的消息的结构。对于这些应用程序,为参数或返回值创建数据协定非常简单。
但是,有时完全控制 SOAP 消息的结构与控制其内容一样重要。当互操作性很重要或专门控制消息或消息部分级别的安全问题时,尤其如此。在这些情况下,您可以创建一个消息契约,使您能够指定所需的精确 SOAP 消息的结构。
更多信息: https://msdn.microsoft.com/en-us/library/ms730255(v=vs.110).aspx
【讨论】:
【参考方案5】:消息合同中最好的部分之一是它总是可以帮助您增加额外的安全性或为身份验证目的编写包装器以对服务进行经过身份验证的调用(这可能包括 WCF 和 WS)同时客户拨打服务电话。
消息契约还通过引入不同的消息检查器来帮助诊断客户端和服务之间的通信。
【讨论】:
以上是关于数据合约与消息合约的主要内容,如果未能解决你的问题,请参考以下文章