下载此文档

数据契约之WCF与序列化.doc


文档分类:IT计算机 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。一旦声明一个类型为 DataContract ,那么该类型就可以被序列化在服务端和客户端之间传送,如下所示。[DataContract] public class UserInfo {//…. }只有声明为 DataContract 的类型的对象可以被传送,且只有成员属性会被传递, 成员方法不会被传递。WCF对声明为DataContrac t的类型提供更加细节的控制, 可以把一个成员排除在序列化范围以外,也就是说,客户端程序不会获得被排除在外的成员的任何信息,包括定义和数据。默认情况下,所有的成员属性都被排除在外,因此需要把每一个要传送的成员声明为 DataMember ,如下所示。[DataContract] public class UserInfo {[DataMember] public string UserName {get; set; }[DataMember] public int Age { get; set; }[DataMember] public string Location {get; set; }public string Zodiac {get; set; }}上面这段代码把 UserInfo 类声明为 DataContract ,将UserName 、Age 、Locatio n 这3个属性声明为 DataMember (数据成员)。 Zodiac 成员没有被声明为 DataMember ,因此在交换数据时,不会传输 Zodiac 的任何信息。 DataContract 也支持 Name/Namespace 属性,如同 ServiceContract ,Name 和 Namespace 可以自定义名称和命名空间,客户端将使用自定义的名称和命名空间对DataContract 类型进行访问。声明为 DataMember 的成员也可以自定义客户端可见的名称,例如: [DataMember(Name="Name")] public string UserName { get; set; }[DataMember(Name="Age")] public int UserAge {get; set; }除了 Name 和Namespace 以外,DataMember 还有以下参数,它们的含义分别如下。(1)IsRequired :值为 true 时,要求序列化引擎检查对象是否存在该值;若无, 则会有异常抛出。(2)Order :bool 类型值,值为 true 时,序列化和反序列化过程将会按成员定义的顺序进行,这对依赖于成员位置的反序列化过程无比重要。(3)EmitDefaultvalue :为成员属性设置一个默认值。一般情况下,将类型声明为 DataContract 就可以满足传送的需求了,不过特殊情况是难以避免的,这时就需要对要传送的 SOAP 消息进行更加精确的控制, MessageContract 可以满足这种需求。把一个类型声明为 MessageContract ,意味着它可以被序列化为 SOAP 消息,可以声明类型的成员为 SOAP 消息的各个部分,如 Header 、Body 等,如下所示。[MessageContra

数据契约之WCF与序列化 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人511709291
  • 文件大小0 KB
  • 时间2016-04-29