知识大全 一起学WCF--数据契约
Posted 知
篇首语:知识越多越令人陶醉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一起学WCF--数据契约相关的知识,希望对你有一定的参考价值。
一起学WCF--数据契约 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这一节我们来了解下WCF的数据契约 我们知道 在以往webservice的数据传输中 如果传递复杂数据类型 需要先进行数据序列化 可以使用Serializable属性进行标记
来对复杂类型进行序列化 但是使用Serializable进行序列化的时候 是把整个类的所有属性和字段进行序列化 实际使用过程中 有些字段和属性我们是不需要进行序列化进行
传输的 这样就增加了数据在传输过程中的开销 使用这种方式缺少灵活性 所以在WCF中 我们可以使用DataContract对复杂类型进行序列化 DataContract可以具体标记哪些字段需要进行序列化 在通信过程中 不需要使用的字段 我们就不要进行序列化 减少传输开销 增加了灵活性
DataContract是在WCF中最常用的数据契约方式 DataContract定义数据契约 DataMember具体定义哪些成员需要进行序列化 没有声明DataMember
特性的成员 就不会进行序列化 出现在XSD文件中 我们看下面怎样定义数据契约
/// <summary>
/// 用户信息
/// </summary>
[DataContract]
public class User
/// <summary>
/// 用户ID
/// </summary>
[DataMember]
public string UserID
get; set;
/// <summary>
/// 用户名
/// </summary>
[DataMember]
public string UserName
get;
set;
/// <summary>
/// 密码
/// </summary>
public string UserPwd
get;
set;
/// <summary>
/// 年龄
/// </summary>
[DataMember]
public int Age
get;
set;
public string Remark
get;
set;
定义完数据契约后 我们定义一个服务契约 客户端就可以通过该契约直接传输数据 客户端添加该契约服务 就可以看到该数据契约了
看如下实例
服务器端契约
// 注意 使用 重构 菜单上的 重命名 命令 可以同时更改代码和配置文件中的接口名 IService
[ServiceContract]
public interface IService
[OperationContract]
string GetData(int value)
[OperationContract]
User GetUserInfo(User user)
// TODO: 在此添加您的服务操作
public class Service : IService
public string GetData(int value)
return string Format( You entered: value)
List<User> list = new List<User>()
public Service ()
list Clear()
User user = new User()
user UserID = ;
user UserName = 下里巴人 ;
user UserPwd = ;
user Age = ;
user Remark = 帅哥 ;
list Add(user )
User user = new User()
user UserID = ;
user UserName = Simple ;
user UserPwd = ;
user Age = ;
user Remark = IT ;
list Add(user )
/// <summary>
/// 获取用户信息
/// </summary>
/// <param name= user ></param>
/// <returns></returns>
public User GetUserInfo(User user)
User info=null;
for (int i = ; i < list Count; i++)
if (list[i] UserID==user UserID)
info=list[i];
break;
return info;
客户端调用
private void button _Click(object sender EventArgs e)
DataService Service Client client = new DataService Service Client()
DataService User user = new DataService User()
user UserID = ;
//返回用户信息
DataService User userInfo=client GetUserInfo(user)
if (userInfo == null)
MessageBox Show( 没找到该用户信息 )
else
MessageBox Show( 姓名 + userInfo UserName + 年龄 + userInfo Age ToString())
效果图
cha138/Article/program/net/201311/12459相关参考
一起学WCF--消息通信模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一节大家共同研究下
一起学WCF--PerSession实例行为 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一
知识大全 SignalR与WCF双工模式结合实现服务端数据直推浏览器端
SignalR与WCF双工模式结合实现服务端数据直推浏览器端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
WCFTips之WCF应用程序的程序集划分 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WCF
ajax调用WCF服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于AJAX调用WCF服务
浅析概括WCF自托管宿主 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习WCF时你可能会遇到
WCF通信简单示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天写了一个WCFdemo给大
WCF的Web编程模型资源 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 自从WCF的Web编程
WCF实现上传图片功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 功能介绍 &nb
谈谈WCFStream对象限制操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WCF支持St