DataContract与消息合同

虽然我已经阅读了一些关于消息合同的WCF文章,但我无法理解消息合同的真实用途。我可以使用
MessageContract
而不是
DataContract
或补充
DataContract
吗?     
已邀请:
DataContract是服务公开和支持的类型的描述。 MessageContract是对SOAP消息的抽象,允许您显式地指示底层消息的结构。 它们旨在互相恭维,服务于不同的目的。     
Marc Gravell回答了类似的问题WCF:MessageContract,DataContract ......困惑?   消息合同的一个优点是您可以设置隐私   对成员,但在许多情况下,这是没有必要的。在这样的   在这种情况下,我更喜欢尽可能简化合同,就像一个   数据合同。     
使用DataContract,该服务可以公开它交换的类型。但是互换的XML(SOAP)不受其控制(尽管受到影响)。 MessageContract可用于显式定义XML(SOAP消息)的结构。     
通常,在构建Windows Communication Foundation(WCF)应用程序时,开发人员会密切关注数据结构和序列化问题,而不需要关心数据传输的消息结构。对于这些应用程序,创建参数或返回值的数据协定非常简单。 但是,有时完全控制SOAP消息的结构与控制其内容同样重要。当互操作性很重要或专门控制消息或消息部分级别的安全问题时尤其如此。在这些情况下,您可以创建一个消息协定,使您可以指定所需的精确SOAP消息的结构。 欲获得更多信息 : https://msdn.microsoft.com/en-us/library/ms730255(v=vs.110).aspx     
消息合同中最好的部分之一是,它总是可以帮助您添加额外的安全性或编写用于身份验证的包装器,以对服务进行经过身份验证的调用(这可能包括WCF和WS),而客户端则致电服务。 消息合同还通过引入不同的消息检查器来帮助诊断客户端和服务之间的通信。     

要回复问题请先登录注册