知识大全 一起学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--消息通信模式

一起学WCF--消息通信模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这一节大家共同研究下

知识大全 一起学WCF--PerSession实例行为

一起学WCF--PerSession实例行为  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这一

知识大全 SignalR与WCF双工模式结合实现服务端数据直推浏览器端

SignalR与WCF双工模式结合实现服务端数据直推浏览器端  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 WCF Tips之WCF应用程序的程序集划分

WCFTips之WCF应用程序的程序集划分  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  WCF

知识大全 ajax调用WCF服务

ajax调用WCF服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  关于AJAX调用WCF服务

知识大全 浅析概括WCF自托管宿主

浅析概括WCF自托管宿主  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习WCF时你可能会遇到

知识大全 WCF通信简单示例

WCF通信简单示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天写了一个WCFdemo给大

知识大全 WCF的Web编程模型资源

WCF的Web编程模型资源  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自从WCF的Web编程

知识大全 WCF实现上传图片功能

WCF实现上传图片功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  功能介绍 &nb

知识大全 谈谈WCF Stream对象限制操作

谈谈WCFStream对象限制操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  WCF支持St