知识大全 WCF Data Contract对Collection和D
Posted 知
篇首语:知识虽宝贵,但更可贵的却在于运用。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 WCF Data Contract对Collection和D相关的知识,希望对你有一定的参考价值。
WCF中的Data Contract:WCF Data Contract对Collection和D 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Data Contract for Collection
我们照例用例子来说明问题 在这里我们创建一个批量处理Order的Service 于是我们创建了一个OrderCollection Type
namespace Artech SpecialDataContract Contract[DataContract]public class Order[DataMember]public Guid OrderID get; set;
[DataMember]public DateTime OrderDate get; set;
public class OrderCollection : List
下面是Service Contract的定义
namespace Artech SpecialDataContract Contract[ServiceContract]public interface IOrderManager[OperationContract(Name = ProcessWithCollection )]void Process(OrderCollection orders);
面是OrderCollection 在XSD中的呈现
<?xml version= encoding= utf ?><xs:schema elementFormDefault= qualified
targetNamespace=
xmlns:xs=
xmlns:tns= xmlns:ser= ><xs:import
schemaLocation= d namespace= /><xs:plexType name= ArrayOfOrder ><xs:sequence><xs:element minOccurs= maxOccurs= unbounded name= Order
nillable= true type= tns:Order /></xs:sequence></xs:plexType><xs:element name= ArrayOfOrder nillable= true type= tns:ArrayOfOrder /><xs:plexTypename= Order ><xs:sequence><xs:element minOccurs= name= OrderDate type= xs:dateTime /><xs:elementminOccurs= name= OrderID type= ser:guid /></xs:sequence></xs:plexType><xs:elementname= Order nillable= true type= tns:Order /></xs:schema>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")][System.ServiceModel.ServiceContractAttribute(ConfigurationName="OrderManagerService.
IOrderManager")]public interface IOrderManager [System.ServiceModel.OperationContractAttribute(Action=
"",
ReplyAction="
ProcessWithCollectionResponse")]void ProcessWithCollection(Artech.SpecialDataContract.Client.OrderManagerService.
Order[] orders);
因为Array相对很Common的数据类型,基本上所有的厂商均提供了对Array的支持,这也是WCF在通过Add Service Reference生成Client端代码的时候,会生成Array的原因。.wiNGwIT不过并不是我们只有唯一的选择,事实上VS为此提供了扩展,允许我们对于基于Collection 的Data Contract生成我们需要的各种类型,我们只需要在Add Service Reference的时候选择“Configure Service Reference”进行相应的配置:
通过上面的截图,我们发现在Collection Type一项我们有若干选项,我们可以选择我们希望生成的数据类型:Array,ArrayList,LinkedList,Generic List,Collection和BindingList。
Data Contract for Dictionary
前面的内容,我们分别讨论了基于Generic和Collection的Data Contract,接下来,我们来讨论最后一个特殊的数据类型的Data Contract:Dictionary。
延续上面的Order Batch Processing的例子,不过我们现在处理的不是一个OrderCollection对象,而是一个Dictionary对象,线面是Service Contract和Order的定义:
namespace Artech.SpecialDataContract.Contract[ServiceContract]public interface IOrderManager[OperationContract(Name = "ProcessWithCollection")]void Process(OrderCollection orders);
[OperationContract(Name = "ProcessWithDictionary")]void Process(IDictionary
[DataContract]public class Order[DataMember]public Guid OrderID get; set;
[DataMember]public DateTime OrderDate get; set;
闲话少说,我们来看XSD:
<?xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified"
targetNamespace=""
xmlns:xs=""
xmlns:tns=""
xmlns:ser=""><xs:import schemaLocation=
"d1"
namespace=""/><xs:import schemaLocation=
"d2"
namespace=""/><xs:plexType name=ArrayOfKeyValueOfguidOrder_SkVQi6O3><xs:annotation><xs:appinfo><IsDictionary xmlns=
"true">true</IsDictionary></xs:appinfo></xs:annotation><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" name=KeyValueOfguidOrder_SkVQi6O3><xs:plexType><xs:sequence><xs:element name=Key type=ser:guid/><xs:element name=Value nillable="true" type=q1:Order
xmlns:q1=""/></xs:sequence></xs:plexType></xs:element></xs:sequence></xs:plexType><xs:element name=ArrayOfKeyValueOfguidOrder_SkVQi6O3 nillable="true"
type="tns:ArrayOfKeyValueOfguidOrder_SkVQi6O3"/></xs:schema>
我们照例看看通过Add Service Reference方式生成的Client端code中的对应的定义:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")][System.ServiceModel.ServiceContractAttribute(ConfigurationName=
"OrderManagerService.IOrderManager")]public interface IOrderManager [System.ServiceModel.OperationContractAttribute(Action=
"",
ReplyAction="")]void ProcessWithDictionary(System.Collections.Generic.Dictionary<System.Guid,
Artech.SpecialDataContract.Client.OrderManagerService.Order> orders);
生成的是一个System.Collections.Generic.Dictionary类型。同Collection一样,也依然可以有多种选择:
图1 cha138/Article/program/net/201311/13994
相关参考
WCFDataContract集合类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Net中
简介WCFDataContract的两个版本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!中断式改
WCF中的DataContract:DataContract概览 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
WCF3.5对HTTP编程的增强 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NETFrame
一起学WCF--wcf初识 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近想把有关WCF的内
WCFTips之WCF应用程序的程序集划分 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WCF
知识大全 jquery click([data],fn)使用方法实例介绍
大概意思就是触发每一个匹配元素的click事件本文通过一个实例为大家详细介绍下jqueryclick([data]fn)的使用方法感兴趣的朋友可以参考下哈希望对大家有所帮助 click(
ajax调用WCF服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于AJAX调用WCF服务
一起学WCF--数据契约 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一节我们来了解下WCF
浅析概括WCF自托管宿主 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习WCF时你可能会遇到