2009-10-07 70 views
3

ON我们应该决定是否必须为我的WCF服务创建dataContract或MessageContract。什么时候应该使用datacontract和WCF中的消息合同

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

其次我已经看到了DataContract通过MessageContract公开的一些代码,它是如何使用它的。

请提供一些现实生活中的scenerios。

回答

4

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

如果您需要非常密切和非常特别地控制SOAP消息的布局,您将只需要消息协定。在大多数情况下,超过90%的时间 - 你没有。

消息协定允许您具体说明哪些元素(标量类型或复合类型为DataContracts)将位于SOAP标头中,哪些位于SOAP正文中。

如果您的通信伙伴需要非常特定的格式,并且您必须调整SOAP消息以完全匹配给定的布局,那么您可能需要此选项。这只是当你需要并且应该使用消息合约的唯一有效方案。因此,长话短说:总是使用数据契约,实际上从来没有使用消息契约(除非你绝对,肯定不得不)。

Marc

3

如果您需要明确接管SOAP标头和主体,则可以使用MessageContracts。例如,如果您需要确保信用卡号码与您的其他类型分开加密,则需要对线路上的消息进行控制。

下面是对一些例子(特别是加密的例子)的更多信息:http://msdn.microsoft.com/en-us/library/ms730255.aspx

如果你只是想单纯的DTO,并不在乎他们对布线形状,去DataContracts。

相关问题