
传说中的WCF系列
文章平均质量分 79
沿袭作者一向重实例,轻理论的理念,以实验的方式向读者展示与WCF技术相关的一些重点知识,并在编写实例过程夹杂一些重要说明,使读者能够真实地体验如何通过实践与尝试来自学编程。系列文章中使用的实例都较为简单,易于读者朋友接受和使用。
东邪独孤
欢迎来到桃花岛宇宙万物尽在其中
展开
-
不引用服务而使用WCF,手动编写客户端代理类
本文将演示如何通过自己手动编写代码来调用WCF服务。首先使用了ChannelFactory来创建通道,并调用与通道关联的服务协定。随后对代码进一步封装,选用从ClientBase类派生,可以更有效地简化代码,而且在处理有服务器回调的服务协定时也方便了许多。原创 2013-08-09 16:45:24 · 23092 阅读 · 8 评论 -
WCF也可以做聊天程序
先看一个截图。 上面的图,各位乍一看,可能会觉得是用Socket编写的聊天程序。告诉你吧,这玩意儿不是用Socket实现,呵呵,当然它的底层肯定与Socket有一定关系,我只说我的代码没有用到socket而已。那么,除了Socket可以用于通信,还有其他技术吗?有啊,首先,如果你足够强大,用HTTP也行,但HTTP初始化的过程貌似比较慢。那么还有吗?当然了,各位还记得.NET以前有原创 2013-04-05 12:14:19 · 11250 阅读 · 10 评论 -
传说中的WCF(13):群聊天程序
前面吹了不少重点知识了,为了可以较为综合地运用它们,今天,我们来做一个可以群聊的应用,就像QQ群那样,一个服务器端,N个客户端,服务器端运行后,每个客户端启动的时候会自动连接服务器生成会话,只要其中任一个客户端向服务器发送消息,服务器都会将消息群发到所有客户端。我们来看看如何用WCF来取代Socket。 这个例子会用到以下知识点:在进程中承载WCF服务。会话的使用。回调。在原创 2012-12-19 10:14:50 · 5830 阅读 · 7 评论 -
传说中的WCF(12):服务器回调有啥用
你说,服务器端回调有啥用呢?这样问,估计不好回答,是吧。不急,先讨论一个情景。假设现有服务器端S,客户端A开始连接S并调用相关操作,其中有一个操作,在功能上有些特殊,调用后无法即时回复,因为在服务器上要作一些后续,而这些处理也许会消耗一定时间,比如:向服务器上传了一个文件,但是,为了节约空间或出于其他目的,服务器要对刚上传的文件进行处理(压缩或者多媒体文件转码),这些操作无法马上向客户端回原创 2012-12-15 12:03:25 · 6792 阅读 · 7 评论 -
传说中的WCF(11):会话(Session)
在标题中我加了一个大家都很熟悉的单词——Session,熟吧?玩过Web开发的朋友肯定在梦中都会见到她。在Web中为什么要会话呢?毕竟每个用户在一个Web应用中可能不止进行一次操作,比如,某二手飞机交易网站,用户A登陆后,可能他会修改他的个人信息,他也有可能看好了一架二手飞机,打算入手,就把商品放到他的“购物车”中,这些过程中,都会产生许多与用户A相关的数据,这些数据只是对A有效,而当用户B登原创 2012-12-11 17:24:48 · 15011 阅读 · 2 评论 -
传说中的WCF(10):消息拦截与篡改
我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子。当然,也有人是通过借助其他工具来抓取数据包来查看。那,有没有办法让程序自己输出相应的SOAP信息呢?当然有,这就是我们本文要说的,对消息的拦截与篡改,呵,我用了一个不太好听动词——篡改。由于WCF的模型相对复杂,原创 2012-12-09 12:26:09 · 13648 阅读 · 11 评论 -
传说中的WCF(9):流与文件传输
在使用Socket/TCP来传输文件,弄起来不仅会有些复杂,而且较经典的“粘包”问题有时候会让人火冒七丈。如果你不喜欢用Socket来传文件,不妨试试WCF,WCF的流模式传输还是相当强大和相当实用的。因为开启流模式是基于绑定的,所以,它会影响到整个终结点的操作协定。如果你不记得或者说不喜欢背书,不想去记住哪些绑定支持流模式,可以通过以下方法:因为开启流模式,主要是设置一个叫Transfe原创 2012-12-02 16:26:51 · 19496 阅读 · 26 评论 -
传说中的WCF(8):玩转消息协定
Message翻译成中文,相信各位不陌生,是啊,就是消息,在WCF中也有消息这玩意儿,不知道你怎么去理解它。反正俺的理解,就像我们互发短信一个道理,通讯的双方就是服务器与客户端,说白了吧,就是二者之间的通信。我们知道一个WCF服务,先是定义服务协定,而服务协定中会有若干个服务操作协定(OperationContract),是这样吧?而所谓的操作协定,就是一个方法。于是,我的结论出来了,客户原创 2012-11-30 12:26:42 · 5503 阅读 · 8 评论 -
传说中的WCF(7):“单向”&“双向”
各位下午好,我又来吹牛了。今天下午天气有些怪,往窗外一看,啊,外面黑乎乎的,远处的人们可以看得见我房子里面的灯光,但我看不见远处的人们,这就是“单向通讯”;希望明天能看到太阳姐姐,这样一来,我站在阳台上,可以看到对面楼顶上散步的妹子,妹子也可以看到我,心情好的话,我们相互打个招呼,这叫做“双向通讯”。所以啊,在WCF中,服务器与客户端的通讯就像我的窗户一样,有单向(单工)和双向(双工)之分原创 2012-11-28 17:35:16 · 5231 阅读 · 5 评论 -
传说中的WCF(6):数据协定(b)
我们继续来吹牛,上一回我们吹了数据协定的一部分内容,今天我们接着来做实验。好的,实验之前先说一句:实验有风险,写代码须谨慎。实验开始!现在,我们定义两个带数据协定的类——Student和AddrInfo。 [DataContract] public class Student { [DataMember] public stri原创 2012-11-19 13:45:32 · 4378 阅读 · 6 评论 -
传说中的WCF(5):数据协定(a)
在第4篇中,咱们吹了发送/接收SOAP头,从本篇开头,我们不妨更深入地去探求一下有关WCF中的消息到底是啥玩意儿。WCF庞大而复杂,而从MSDN文档中,你会看到许多很专业很抽象的东西,你不禁会问,文档中所说的,是不是都有用的呢?实用的理论还是有的,不过有些要点确实太抽象了,抽象到有时候我也不知道用来干吗?不过,数据协定应该算比较有用的东西,至少在你写WCF服务时还是会经常用到。 我们先原创 2012-11-18 14:05:46 · 5639 阅读 · 11 评论 -
传说中的WCF(4):发送和接收SOAP头
如果你实在不明白Header是个啥玩意儿,你就想一想你发送电子邮件时,是不是有个叫“附件”的东东?对啊,那么SOAP头是不是可以理解为一种附加信息?就是附加到消息正文的内容。消息正文又是啥?WCF除了流模式传输数据外,剩下的基本来说就是消息模式。我们不妨这样理解,WCF的服务器端和客户端是通过消息来交互的,就像我们之间在发短信一样,我发给你,你可以回复我,这叫“双工”,不好读吧,叫双向好了;你原创 2012-08-09 11:41:19 · 11095 阅读 · 13 评论 -
传说中的WCF(3):多个协定
近几天忙于一些事情,没有更新博客,灰常抱歉。我们知道,WCF服务端是先定义服务协定,其实就是一个接口,然后通过实现接口来定义服务类。那么,有一个问题,如果一个服务类同时实现N个接口(也就是有N个协定)呢?结果会如何?不必猜,我们还是通过实验来说明吧。首先,参照下面代码写好服务器端,代码中,我写了三个协定,然后一个服务类同时实现它们。using System;using Syst原创 2012-08-05 23:33:41 · 6357 阅读 · 10 评论 -
传说中的WCF(2):服务协定的那些事儿
上一篇文章中,我们抛出了N个问题:WCF到底难不难学?复杂吗?如果复杂,可以化繁为简吗?其实,这些问题的答案全取决于你的心态,都说“态度决定一切”,这句话,不知道各位信不信,反正我是信了。首先,敢于挑战自我,乐于接受新事物的人,就不会觉得有啥难学的,“世上有难事,只怕有心人”;再者,WCF当然复杂了,整个.NET框架都复杂,但不难学,因为.NET有一个先天性优点——集成性和统一性严重地好,这也原创 2012-07-29 12:35:01 · 7814 阅读 · 5 评论 -
传说中的WCF(1):这东西难学吗?
WCF难学吗?是啊,这问题估计很多人都会问,也包括阿拉在内,也有此深刻而严重的凝问。也有人说:“如何某项技术可以化繁为简,学起来轻松一点就好了。”也许,人类开生就摆脱不了一种习性——懒惰;不过,也有人认为,很多时候,人们是不是总喜欢把简单的事情复杂化,那么,很多人都觉得很复杂的WCF算不算被人们“神话”了呢?这个问题,我不作回答,现在我们要做一件事,一起来跟着我的步骤,写一个程序再说。原创 2012-07-27 12:14:46 · 11833 阅读 · 23 评论