', //表明这里循环读取drinks节的数据,当数据没有属性名称时,用"."...' ); tpl.overwrite(Ext.getBody(), data); }); 运行结果图: 接下来我们看看如何跟服务器端的...; using System.Runtime.Serialization; namespace Ajax_WCF { [DataContract] public class Person...服务" a.同时将svc手动修改一下,注意下面的高亮部分要手动加上去: WCF.MyService...对象,请求MyServices.svc/GetPerson方法,获取Json字符串,其它地方完全一样,需要注意的是: a.返回的字符串,需要用Ext.Util.JSON.decode转换成JSON对象
相信不少人会心动的),不仅组件丰富,效果漂亮,而且ExtJs集成的Ajax功能可以方便的与.Net的WCF进行交互....这里我们将演示ExtJs的FormPanel从WCF加载数据,以及如何提交数据到WCF服务端 1.首先来定义一个用于传输信息的Class(实际开发中,可以是Linq to Sql的Class或任何可序列化的实体类...2.再定义几个用于跟ExtJs交互的方法(初次接触Ajax与WCF交互的同志,建议参考一下老张的"Ajax与WCF交互-WCF之美(http://www.cnblogs.com/jillzhang...(request.responseText); //将服务端wcf的返回值,格式化为Json对象 form.getForm().setValues...最近学习了ExtJs和WCF后,个人强力推荐.net3.x时代web开发的绝佳组合: ExtJs(前端) + WCF(web服务层) + Linq To Sql(DAL,以后可能会换成Ado.Net Entity
第六集 WCF DataContract & DataMember (WCF的Data和DataMember) 这些天写下来关于那个mex还是有点困惑,早上在stackoverflow上搜到一个回答,感觉写得挺好的...再建一个控制台程序,来托管这个服务,运行成功。 客户端调用 新建一个WebForm的客户端,实现如下效果,代码不贴了,都很基本。 ? 在id框里面输入id,查询这个id的对应的信息。 ?...那是因为,从framework 3.5开始,如果我们没有使用DataContract 或者DataMember 特性,那么WCF的DataContractSerializer会自动把所有的public属性按照字典序的顺序序列化...由于我们只给类标记了DataContract特性,没有任何字段被序列化了。。。(因为没有序列化字段,客户端在调用这个类的时候也是无法获取到对应的属性的。...如图: ) 其实,DataContract应该是和DataMember配合使用。并且,这也是WCF推荐的做法。下面我们来实现一个。
而我们现在介绍的数据契约,则属于面向服务的概念。两者具有一些冲突 ,比如面常服务没有继承、重载的概念一样,面向服务同样也无法理解泛型。...但是基于WCF的编程语言是C#、VB.NET这样的完全面向对象的编程语言,而WCF服务却是基于面向服务的。...我们说了,面向服务下的数据契约完全没有泛型的概念,对它来说所有的类型都是“实实在在”的具体类型。...WCF技术剖析之二:再谈IIS与ASP.NET管道 WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿 WCF技术剖析之四:基于IIS的WCF服务寄宿(Hosting)实现揭秘 WCF技术剖析之五...WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 WCF技术剖析之十一:异步操作在WCF中的应用(上篇) WCF技术剖析之十一:异步操作在WCF中的应用(下篇) WCF技术剖析之十二:数据契约
第12集 Backward compatible WCF contract changes WCF合约改变后的向后兼容性 这一集主要内容来自https://msdn.microsoft.com/en-us...一般来说WCF服务部署到生产环境后,因为客户端的代理类已经生成,所以,服务端不建议再做更改。但总会有避免不了要更改的情况。下面就通过2个表格来对典型的情况做一些说明。...表1: Service Contract的向后兼容性 服务端合约改变 对现有客户端的影响 对原有的Operation也就是方法增加参数 没有影响,服务端会使用该参数的默认值 移除原有的Operation...的某些参数 没有影响,服务端直接忽略 改变参数的类型 如果类型之间可以转换,比如short到int,就没有问题,但是如果是不可转换的类型,比如int到DateTime,客户端就会得到异常 改变方法的返回值类型...由ErrorMessage中可知,服务端想得到一个City,但是没有获取到这个参数由于我们的测试代码里面没有也不能提供这个参数。 Thank you。 就这样把。
一.WCF部分 1.通过查看官方的示例得知,分页数据源需要一个记录总数值,为保持通用性,这里借鉴jillZhang的文章,把他写的通用类PageData拿过来直接用 1 using System;... 2 using System.Runtime.Serialization; 3 4 namespace Ajax_WCF 5 { 6 [DataContract] 7...} 12 13 [DataMember] 14 public T Data 15 { get; set; } 16 } 17 } 2.服务端的...WCF方法:GetDataByPage [OperationContract] [WebInvoke(Method = "*", ResponseFormat = WebMessageFormat.Json...以前默认在linq to sql(dbml)设计器里拖出来的类,默认生成的代码是不支持序列化的,我们只能手动添加[DataContract]和[DataMember], 其实系统可以自动生成的,方法是在
如果采用自我寄宿的方式,我们需要为每个寄宿的服务创建ServiceHost对象。但是一个应用往往具有很多服务需要被发布,基于单个服务的ServiceHost的创建将会变成一个很繁琐的事情。...如果我们能够采用某种机制来读取所有配置的服务,并自动为它们创建相应的ServiceHost对象,这无疑是一种理想的方式。...这种做法是不被推荐的,原因有二: 配置元素的name属性并不是寄宿服务的类型全名,而是通过ServiceBehaviorAttribute特性对应的服务配置名称; 即使我们不对服务的配置名称作显式设置...而ServiceTypeElement的配置ServiceType表示具体的服务类型。...三个服务以及包含的终结点定义在如下的配置中,而三个服务类型同时被定义在了我们自定义的配置节下。
,WCf不能在元数据中公开它们,然后WCF专门为集合提供了编组原则。 ...,那么只要提供的集合包含了Add方法,并且符合以下签名中的一种,WCF就能够自动地将集合规范为数组类型。 ...当服务的一方处理集合类型时,服务的另外一方若处理数组类型,就会导致双方语义不对称,集合拥有数组不具备的优势。...对于集合是否包含Add方法,或者集合是否支持IEnumerable和IEnumerable接口,并没有编译时或者运行时的有效验证。如果不符合条件,就会导致数据契约不可工作。...注意,不能同时将DataContract和CollecctionDataContract应用到集合类型上,在装载服务的时候同样会检查这一点。
这一节,将学习到除了用JSON做GridPanel的数据源外,还可以使用XML 一。静态示例 1.xml文件内容: WCF动态读取 1.WCF端关键代码 定义一个可序列化的类(当然也可以是Linq to Sql中自动生成的类,不过要手动加DataContract和DataMember标记,以满足WCF的数据契约要求...) [DataContract] public class Book { [DataMember] public string ISBN; [DataMember...,运行之后,用Web Development Helper插件监测到GetXmLData返回的内容为: datacontract.org.../2004/07/Ajax_WCF" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> Alien</Author
动手了,WCF 开发WCF服务的终结点需要涉及下面几个任务: 开发服务契约:指定终结点可用的WCF服务的操作。 开发绑定:绑定指点终结点与外界通信的协议。...WCF默认使用的是一个XML串行化器DataContractSerializer,用它对WCF服务和客户交换的数据进行串行化和反串行化。...作为开发人员,我们必须要做的是用元数据属性DataContract标注WCF和其客户所交换的数据的类型。用元数据属性DataMember标注交换数据类型中要串行化的属性。...(详细看上面的代码) 实现WCF服务契约 就是实现一个类,也就是业务逻辑,其本质是和WCF没有直接联系的,供WCF服务调用而已。...服务的名称设为WCFStudent.WCFStudentText,WCF服务终结点(EndPoint)的服务契约设定为我们所编写的契约WCFStudent.IStuServiceContract 当然我们可以用
本文将讲解如何用XTemplate结合WCF与服务端交互,生成数据列表,同时加上无刷新分页功能(默认情况下ExtJs并没有为XTemplate并没有提供分页功能) 1.先做一些准备工作,写一个通用的类...为此我们需要一个第三方的用于序列化DateTime的小工具Newtonsoft.Json.dll,它是专门用于将对象序列化成Json字符串。...4.建一个WCF服务,并添加一个方法: Code [OperationContract] [WebInvoke(ResponseFormat = WebMessageFormat.Json...,但是wcf的服务在返回时,必须要有一种格式,要么xml,要么json,所以我们指定了wcf以json格式返回后,会对正常的结果再做一次序列化,最后的结果是使字符串前后都加上了双引号,同时把原来正常的双引号做了转义处理...相信也有不少人跟我有一样的疑问,后来我想了想,至少有二个好处: a.updatepannel默认会引起大量的数据回发,虽然页面没刷新,但是客户端跟服务端之间的传输数据量很大,而用ExtJs+Wcf
前言 前段时间忙着驾照科目二的考试,都没有机会碰自己的电脑。说起来也是第一次参加这么没信心的考试,不过好在过了。...第七集 KnowType attribute in WCF(WCF的KnowType 特性) 上一集通过介绍DataContract 和 DataMember 特性实现了一个基本的查询+新增Employee...确实,ServiceContract是WCF服务和客户端交流的契约,如果契约里面没有引用,外界就没有调用的理由。哪怕是给PartTimeEmployee加上了DataContract 特性。...具体可以通过本地运行服务然后访问http://localhost:8080/?...视频本身比较长,但是剩下的和WCF本身没有关系,是一些WebForm的东西,就不写出来了。有兴趣的自己进群看吧。 初学者,有说错的地方,不吝指正。ThankYou!!!
而后新建ConsoleHost、Client两个控制台应用程序,分别为在控制台中实现服务托管使用,一个作为.net平台上调用WCF的实例使用,如下图 ?...,在使用DataContract和DataMember修饰和类和属性后,可将这些类型和属性暴露在元数据中,而后设计服务契约 定义一个借口名为IEmployeeManagement并添加一个方法签名...,所以没有具体的去实现它,知识简单的返回了一个SalaryDetail的实例,Id为传入参数的员工ID,时间为当前时间的前一个月,薪水为固定的20000。...并使用WCF服务配置编辑器打开它,并配置服务托管地址和绑定类型等信息,最终配置结果为 的实现了WCF服务的实现和.net本平台调用WCF,这一篇不是最重要的,下一篇是使用IIS托管WCF并使用PHP调用WCF。
WCF中传输的数据不想传统的面向对象编程,它只传递了一些对象的属性,但是自身并不知道自己属于什么对象,所以,他没有子类和父类的概念,因而也就没有Is-a的关系,所以在WCF中,如果想维持这种继承关系,就需要做一些特殊的处理了...的,因为在服务定义中并不知道有Manager类的存在。...解决这种问题的有如下几种方法 代码中定义 解决这种问题的一种方法是使用KnownTypeAttribute告诉WCF存在Manager的信息: [DataContract] [KnownType(typeof...但是如果不想Manager暴露给所有的使用Employee的服务,则可以使用ServiceKnownTypeAttribute应用在服务定义或者操作定义上,这样就只会有服务或者操作才能够接受Manager...,就是客户端必须事先知道这些子类,添加一个子类就得修改一次代码,重新编译,部署,所以WCF也允许允许通过配置文件的方式添加这些子类。
服务端 (1)新建一个"启用了Ajax的WCF服务",命名为MyService.svc (2)写一个方法用于取得网格所需的数据 [ServiceContract(Namespace = "")]...,默认情况下linq to sql设计器生成的T_Class类里,是不支持序列化的,ExtJs调用时无法正确序列成JSON字符串,需要手动在类前加上数据契约 [DataContract],在属性前加上[...2.WCF的服务端方法,必须设置成JSON格式,另外Method设置为GET,否则运行时,前端页面读不出数据 3.如果设置了autoExpandColumn,则autoExpandColumn对应的列...,必须是id对应的列,否则出错 4.服务端的类中,如果有DateTime字符的字段,需要手动修改dbml对应的cs文件,把DateTime改成string,否则序列化时,会产生很怪的值,估计是.Net...在序列化成JSON时的bug. 5.为了减少生成的JSON字符串的大小,可以仅在需要输出的类属性上标记[DataMember],这样在生成的JSON字符串,不会包含未标记为[DataMember]的字段
一、数据契约 一个正常的服务调用要求客户端和服务端对服务操作有一致的理解,WCF通过服务契约对服务操作进行抽象,以一种与平台无关的,能够被不同的厂商理解的方式对服务进行描述。...同理,客户端和服务端进行有效的数据交换,同样要求交换双方对交换数据的结构达成共识,WCF通过数据契约来对交换的数据进行描述。...同服务契约类似,WCF采用了基于特性(Attribute)的数据契约定义方式。...二、数据契约序列化器(DataContractSerializer) 在WCF中,数据契约的定义是为序列化和反序列化服务的。...对于WCF的序列化或反序列化来说,数据的容量越大、成员越多、层次越深,序列化的时间就越长,耗用的资源就越多,如果黑客频繁地发送一个海量的数组过来,那么服务就会因为忙于进行反序列化的工作而没有足够的资源处理正常的请求
,Service端的Order和Client端的CustomOrder具有很大的差异,但是通过WCF Datacontract Attribute的适配,他们是相互匹配的。...原因很简单,Service端的Data Contract根本就没有ShippingAddress成员,所有在反序列化生成Order对象的时候将会忽略ShippingAddress的信息。...其实在WCF中解决这样一个问题的方案简单而直接,那就是在Data Contract中定义一个额外的成员来存储没有在成员列表中定义的信息。...[原创]谈谈WCF中的Data Contract(1):Data Contract Overview [原创]谈谈WCF中的Data Contract(2):WCF Data Contract对Generic...的支持 [原创]谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持 [原创]谈谈WCF中的Data Contract
通过第一部分的介绍,我们可以体会到,WCF 的Data Contract在CLR Type和Neutral Contract之间搭建了一座桥梁,弥合了.NET世界和厂商中立世界的差异。...通过WCF Data Contract我们将CLR Data Type暴露成一个厂商中立的数据结构的描述,同样通过WCF Data Contract我们将一个现有的CLR Data Type和既定的Neutral...我想你也不能容忍生成的如此冗长、甚至没有太大意义的Class name。我们有办法生成一个友好的名称。...但是这并没有根本解决问题,如果在我现在不同的Namespace中创建了两个OrderHeader和OrderDetail呢?...这无疑在.NET中是合法的,但是对于DataContract有有可能出现命名冲突。 这也就是为什么WCF默认机制下会为Data Contract Name添加一个额外hash value的原因。
前两篇写了在.net中和php中调用WCF。...这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具,用起来是极为爽快...所以,就它吧 其实在有了wsimport,在java调用wcf的时候是极为简单的,当然这是建立在使用不太复杂的服务的情况下,如果还要考虑安全验证、发布订阅等问题,还是相对复杂的,但是这三篇文章没准备写那么多...2.生成WCF客户端 使用的就是上面提到的wsimport,如果您正确的配置了java环境变量,就可以直接在控制台中使用了,简历文件夹x:/workspace/EmployeeManager/...5.新建测试文件test.java import org.datacontract.schemas._2004._07.contracts.*; import com.microsoft.schemas
三:代码实现[WCF端] 1:WCF端代码:实体修改 WCF端:Player玩家实体 ExpandedBlockStart.gif /// /// 游戏玩家 by 路过秋天...2:WCF端:Service.cs代码修改[被注释的是原来的代码,未注释的是修改的代码] 方法:EnterRoom ExpandedBlockStart.gif //if (!...room.RedInChair)//房间的红色座位有没有人 //{ // room.RedInChair = player.ColorValue =...room.BlackInChair)//房间的黑色座位有没有人 //{ // room.BlackInChair = player.ColorValue...服务端编绎过去后,客户端注意更新服务引用,接着由于服务端实体的两字段被删除,必然会引发个别小错误了。
领取专属 10元无门槛券
手把手带您无忧上云