2010-11-07 54 views
28

尽管我已经阅读了一些关于消息合约的WCF文章,但我无法理解消息合约的真正用途。我可以使用MessageContract而不是DataContract或补充DataContract吗?DataContract vs Message Contract

+0

的可能重复[WCF:MessageContract,DataContract ...弄得(http://stackoverflow.com/questions/673638/wcf-messagecontract-datacontract-confused) – 2013-05-21 09:02:49

+0

请检查以下链接:http://www.sujitbhujbal.com/2012/05/when-to-use-data-contract-and-message.html – 2013-08-22 14:34:52

+0

DataContract是关于发送和接收的数据(类)的合同通过服务。 MessageContract是一种方法(您可以选择)定义低级SOAP消息结构。 (但你不需要这样做,如果你有基本的数据信息,它可以被忽略) – 2017-09-08 09:01:55

回答

13

A DataContract是由您的服务公开和支持的类型的描述。 A MessageContract是SOAP消息的抽象,它允许您明确指定底层消息的结构。

它们的意思是相互恭维,服务于不同的目的。

+4

你可以给我一些实现 – 2010-11-07 17:12:43

6

使用DataContract,该服务可以公开它交换的类型。但是互换的XML(SOAP)不受其控制(虽然受到影响)。虽然MessageContract可以用来明确定义XML(SOAP消息)的结构。

0

其中一个最好的部分在消息合约,它总是会帮助你把额外的安全性或编写一个包装认证的目的,使服务(S)认证呼叫(这可能包括WCF和WS),而客户端打电话给服务。

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

2

通常,在构建Windows Communication Foundation(WCF)应用程序时,开发人员密切关注数据结构和序列化问题,并且不需要关心携带数据的消息的结构。对于这些应用程序,为参数或返回值创建数据合约很简单。

但是,有时对SOAP消息结构的完全控制与控制其内容一样重要。当互操作性很重要或特别控制消息或消息部分的安全问题时,尤其如此。在这些情况下,您可以创建一个消息协定,使您能够指定所需的精确SOAP消息的结构。

欲了解更多信息: https://msdn.microsoft.com/en-us/library/ms730255(v=vs.110).aspx