第二章-服务契约与数据契约

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章-服务契约与数据契约相关的知识,希望对你有一定的参考价值。

  1. 服务契约 

服务契约定义了服务向外界公开的功能,这些功能表现为服务操作,在SOAk ,经常需要交接一组SOAP消息,而这些消息的模式通常是在服务契约中定义的。服务契约还可以进一步定义每个服务操作的消息交换模式(请求-响应模式,单工模式,双工模式) 

 

 

  1. 数据契约 

通常,需要把一个或多个参数传递给一个服务操作,并等待服务操作返回一个值。消息参数的结构在数据契约中被解释为XSD Schema,而XSD Schema是WSDL文档的一问你。数据契约定义了客户端与服务之间信息交接的结构和内容。 

 

  1. 消息契约 

 

消息契约属于高级功能,使用它可以对SOAP头和SOAP体进行更好的控制。消息契约直接与SOAP消息交互,而不只是与消息体交互,当使用数据契约而不使用消息契约时,就属于这种情况 

 

  1. 契约与代码 

 

 

  1. 汽车租赁服务-----实现示例 

 

 

  1. 服务契约与数据契约的版本控制 

 

双向版本控制,IExtensibleDataObject接口并定义必不可少的ExtensionDataObject成员。如果DataContractSerializer序列化器在XML文档中检测到未知的元素,地么在反序列化时,会把写入ExtensionDataObject属性包。当再次引用ExtensiondataObject对象的内容时,它里的内容还将保留,因此在数据契约的不同版本之前,数据不会丢失。 

 

如果不同模式之前没有必要严格保持一致,则只需要注意以下几点: 

  • 可以在任何时候添加新方法 

  • 可以不删除任何己存在的方法 

  • 参数的数据类型必需必需保持兼容 

以上是关于第二章-服务契约与数据契约的主要内容,如果未能解决你的问题,请参考以下文章

WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化

WCF服务编程一书中写到:契约操作不能使用引用对象参数,只允许使用基本类型或者数据契约?

契约类相关的序列化与反序列化

数据契约[DataContract]

WCF 数据契约(DataContract)

使用稍微复杂的方法引用 WCF 服务时获取“递归集合数据契约”