WCF简单教程(4) 数据契约
2012-03-08 13:34
375 查看
第四篇:用数据契约传递自定义数据对象
之前的演示中,我们一直都是在用string类型做参数和返回值,实际项目中肯定会传递自定义的数据类型。与WebService不同,WCF想传递自定义数据,必须要将其定义为数据契约。看一个例子:
这个契约需要在客户端和服务端都存在,然后它就可以作为参数或返回值,在双方互相传递了,具体例子就省略了。
这里面有一点需要注意,数据契约与服务契约有一点小小的区别,数据契约要求在客户端和服务端必须保持完全一致的类名与命名空间,否则就无法传递数据,这与服务契约是不同的,服务契约放到客户端时允许换个命名空间。
组内有同事遇到过类似的问题,直接把数据契约类copy了一份到客户端之后改了命名空间,然后就一直取不到数据。 这里也引出另一个话题,推荐把各种契约(不含实现类)单独封装成一个dll,双方均引用它,结构上清晰,也避免出错。
今天这篇有点短,下回聊一聊用IIS做HOST。
之前的演示中,我们一直都是在用string类型做参数和返回值,实际项目中肯定会传递自定义的数据类型。与WebService不同,WCF想传递自定义数据,必须要将其定义为数据契约。看一个例子:
using System; using System.Runtime.Serialization; //注意加上这个引用,并引用相应的dll namespace Server { //用DataContract来标记本类是数据契约类 [DataContract] public class UserEntity { //用DataMember来标识数据成员,没有此标识的属性不会作为数据契约的一部分 [DataMember] public string Name { get; set; } [DataMember] public int Age { get; set; } } }
这个契约需要在客户端和服务端都存在,然后它就可以作为参数或返回值,在双方互相传递了,具体例子就省略了。
这里面有一点需要注意,数据契约与服务契约有一点小小的区别,数据契约要求在客户端和服务端必须保持完全一致的类名与命名空间,否则就无法传递数据,这与服务契约是不同的,服务契约放到客户端时允许换个命名空间。
组内有同事遇到过类似的问题,直接把数据契约类copy了一份到客户端之后改了命名空间,然后就一直取不到数据。 这里也引出另一个话题,推荐把各种契约(不含实现类)单独封装成一个dll,双方均引用它,结构上清晰,也避免出错。
今天这篇有点短,下回聊一聊用IIS做HOST。
相关文章推荐
- WCF简单教程(4) 数据契约
- wcf 基础教程 之已知类型KnownType 数据契约序列化DataContractSerializer
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- wcf基础教程之 数据契约的序列化DataContractSerializer
- wcf 基础教程 契约 Contract 控制xml输出 数据契约DataContract序列化前身 XmlSerializer xml序列化
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- WCF基础教程(四)——数据契约实现传送自定义数据类型
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- wcf基础教程之 数据契约的序列化DataContractSerializer
- wcf 基础教程 契约 Contract 数据契约DataContract序列化前身 XmlSerializer xml序列化
- WCF契约的简单介绍(服务契约 数据契约 消息契约)
- vb.net 教程 8-1 简单数据绑定 2
- WCF数据契约与序列化(转)
- WCF简单教程(9) 安全 - 自定义认证
- C# WCF简单入门图文教程(VS2010版)
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- WCF客户端与服务端通信简单入门教程