传说中的WCF(3):多个协定】的更多相关文章

Message翻译成中文,相信各位不陌生,是啊,就是消息,在WCF中也有消息这玩意儿,不知道你怎么去理解它.反正俺的理解,就像我们互发短信一个道理,通讯的双方就是服务器与客户端,说白了吧,就是二者之间的通信. 我们知道一个WCF服务,先是定义服务协定,而服务协定中会有若干个服务操作协定(OperationContract),是这样吧?而所谓的操作协定,就是一个方法. 于是,我的结论出来了,客户端与服务器端通信,每调用一回操作协定就相当于发送/接收一条消息,你干脆理解为一个OperationCon…
在第4篇中,咱们了解了发送/接收SOAP头,从本篇开头,我们不妨更深入地去探求一下有关WCF中的消息到底是啥玩意儿.WCF庞大而复杂,而从 MSDN文档中,你会看到许多很专业很抽象的东西,你不禁会问,文档中所说的,是不是都有用的呢?实用的理论还是有的,不过有些要点确实太抽象了,抽象到 有时候我也不知道用来干吗? 不过,数据协定应该算比较有用的东西,至少在你写WCF服务时还是会经常用到. 我们先不管数据协定是什么,就从一个例子入手吧. 1.以管理员身份运行VS,注意,要以管理员身份运行,不然等会儿…
我们知道,WCF服务端是先定义服务协定,其实就是一个接口,然后通过实现接口来定义服务类.那么,有一个问题,如果一个服务类同时实现N个接口(也就是有N个协定)呢?结果会如何? 不必猜,我们还是通过实验来说明吧. 首先,参照下面代码写好服务器端,代码中,我写了三个协定,然后一个服务类同时实现它们. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Ser…
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于挑战自我,乐于接受新事物的 人,就不会觉得有啥难学的,“世上有难事,只怕有心人”:再者,WCF当然复杂了,整个.NET框架都复杂,但不难学,因为.NET有一个先天性优点—— 集成性和统一性严重地好,这也是我乐于研究.NET的主要原因之一,复杂但不混乱.一个统一的国家总比一个四分五裂的国家要强大:第三…
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗? 其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了.首先,敢于挑战自我,乐于接受新事物的人,就不会觉得有啥难学的,“世上有难事,只怕有心人”:再者,WCF当然复杂了,整个.NET框架都复杂,但不难学,因为.NET有一个先天性优点——集成性和统一性严重地好,这也是我乐于研究.NET的主要原因之一,复杂但不混乱.一个统一的国家总比一个四分五裂的国家要强大:第三,任…
我们继续,上一回我们了解了数据协定的一部分内容,今天我们接着来做实验.好的,实验之前先说一句:实验有风险,写代码须谨慎. 实验开始!现在,我们定义两个带数据协定的类——Student和AddrInfo. [DataContract] public class Student { [DataMember] public string Name; [DataMember] public string Phone; [DataMember] public AddrInfo Address; } [Da…
你说,服务器端回调有啥用呢?这样问,估计不好回答,是吧.不急,先讨论一个情景. 假设现有服务器端S,客户端A开始连接S并调用相关操作,其中有一个操作,在功能上有些特殊,调用后无法即时回复,因为在服务器上要作一些后续,而这些处理也许会消耗一定时间,比如: 向服务器上传了一个文件,但是,为了节约空间或出于其他目的,服务器要对刚上传的文件进行处理(压缩或者多媒体文件转码),这些操作无法马上向客户端回复,而客户端也不可能就停在这里一直在等.我们希望,在客户端上传文件后马上返回,而服务器对文件处理完成后再…
在标题中我加了一个大家都很熟悉的单词——Session,熟吧?玩过Web开发的朋友肯定在梦中都会见到她. 在Web中为什么要会话呢?毕竟每个用户在一个Web应用中可能不止进行一次操作,比如,某二手飞机交易网站,用户A登陆后,可能他会修改他的个人 信息,他也有可能看好了一架二手飞机,打算入手,就把商品放到他的“购物车”中,这些过程中,都会产生许多与用户A相关的数据,这些数据只是对A有效,而 当用户B登陆后,对于B,又会有他自己的数据,总的一句话就是,每个客户端在服务器上都有其的独立数据存储区,互不…
我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过 程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过借助其他工具来抓取数据包来查看.那,有没有办法让程序自己输出相应的SOAP信息呢? 当然有,这就是我们本文要说的,对消息的拦截与篡改,呵,我用了一个不太好听动词——篡改. 由于WCF的模型相对复杂,对于如何拦截和修改消息会让许多刚接触的朋友有点抓狂.是的,虽然MSDN文档都有详细的说明,但估计你也和…
在使用Socket/TCP来传输文件,弄起来不仅会有些复杂,而且较经典的“粘包”问题有时候会让人火冒七丈.如果你不喜欢用Socket来传文件,不妨试试WCF,WCF的流模式传输还是相当强大和相当实用的. 因为开启流模式是基于绑定的,所以,它会影响到整个终结点的操作协定.如果你不记得或者说不喜欢背书,不想去记住哪些绑定支持流模式,可以通过以下方法: 因为开启流模式,主要是设置一个叫TransferMode的属性,所以,你看看哪些Binding的派生类有这个属性就可以了. TransferMode其…