如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
可序列化类型(lèixíng)数据契约已知类型(lèixíng)(Knowntypes)IXmlSerializable在分布式系统中,一个Application与另一个Application之间进行交互,必然需要携带数据。在服务内部,功能由代码实现,而在服务外部,功能由WSDL定义,WCF服务内部程序的数据由简单与复杂类型,而在服务外部,数据由XSD(XMLSchemaDefinitions)表示。数据契约的作用:类型与XSD之间进行映射。映射成XSD后随WSDL一起发布。序列化可以(kěyǐ)理解成这种关系的映射。Serialization可以(kěyǐ)看成是把包含相同内容的数据从一种结构(.NETObject)转换成另一种结构(XML)。要实现在两种不同结构之间的转化,这两种结构之间必须存在一种Mapping(映射)。Serialization的实现由序列化器(Serializer)来负责。WCF序列化将对象(duìxiàng)图转化为XML信息集的过程。将CLR类型转化成符合标准的XML满足下列条件之一将被DataContractSerializer序列化:标记有[DataContract]和[DataMember]属性具有[CollectionDataContract]属性由IXMLSerializable派生(pàishēng);标记有[Serializable]属性,而成员未标记[NonSerialized]标记有[Serializable],并实现了Iserializable接口;CLR内建基本类型,如int,stringBytesarray、DateTime、等数组或容器枚举Serialization是通过Serializer来完成的,在WCF中,有3种不同的Serializer——DataContractSerializer(定义在System.RunTime.Serializtionnamespace中)XMLSerializer(定义在System.XML.Serializationnamespace)NetDataContractSerializer(定义在System.XML.Serializationnamespace)。他们用不同的方式实现.NETObject的Serialization。DataContractSerializer和NetDataContractSerializer基本上没有太大的区别,其中DataContractSerializer为WCF默认的Serializer,如果没有显式定义采用(cǎiyòng)另外一种Serializer,WCF会创建一个DataContractSerializer序列化NETObject。WCF中序列化方式(fāngshì)所有域都被序列化–无论可访问性(accessibility)如何无法对命名规范或者数据类型进行控制(kòngzhì)不想系列化某个成员,可以在该成员上添加[Nonserializable]特性为了获得最大可能的互操作性,建议使用DataContractAttribute和DataMemberAttribute属性对类型进行标记(biāojì),以创建数据协定。数据协定是服务协定的一部分,用于描述服务操作交换的数据。对于复杂类型,使用DataContractSerializer是一种较好的方法数据契约(qìyuē)(DataContracts)概述数据契约(qìyuē)(DataContracts)概述创建数据(shùjù)契约[DataContract]publicclassPeople{[DataMember]publicstringname;[DataMember]publicintage;publicPeople(stringname,intage){this.name=name;this.age=age;}}[ServiceContract]publicinterfaceIService1{[OperationContract]stringGetInfomation(Peoplepeople);提供(tígōng)命名空间(Namespace)能够提供(tígōng)显式的Name可以指定(zhǐdìng)排列顺序–缺省按照字母表顺序排列能够显式提供Name,IsRequired(表示是不是为空,如IsRequired=true,表示Name在序列化之前必须要被赋值,不为空)DataContractSchema按照字母(zìmǔ)顺序排序(缺省)数据契约是可选的样式协定:除非显式应用数据协定属性,否则不会序列化任何类型或数据成员数据协定与托管代码的访问(fǎn