【问题标题】:DataContract vs Message Contract数据合约与​​消息合约
【发布时间】:2023-03-14 18:40:01
【问题描述】:

虽然我已经阅读了一些关于消息合约的 WCF 文章,但我无法理解消息合约的真正用途是什么。我可以使用MessageContract 代替DataContract 或作为DataContract 的补充吗?

【问题讨论】:

标签: c# .net wcf web-services


【解决方案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)同时客户拨打服务电话。

        消息契约还通过引入不同的消息检查器来帮助诊断客户端和服务之间的通信。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-14
          相关资源
          最近更新 更多