看到这么多同仁关注和研究WCF,究竟它有什么令众人着迷的特点了?在考虑这个问题之前就的分析以前的分布式技术,大家最熟悉的莫过于Web服务,他的优势很明显,也受到了市场极大的欢迎,使用过Web服务的开发人员都清楚,不灵活是它的致命伤,当载体发生改变时就会出现问题,虽然可以通过广播的形式获取信息服务地址,但是前提是开发人员必须对底层通信非常了解,这无疑大大增加了开发成本.同时Web服务的基本思想就不是很合理,它的开发和使用无法实现并行,大大延长了开发周期,它的使用也有一定的局限性,为了解决这些弊端以及统一分布式开发多分天下的局面,微软推出了WCF,WCF融合了所有分布式开发技术的长处,集大统于一身.
其实分布式技术就是为实现不同计算机之间的通信,归根到底还是网络通信.既然涉及到不同计算机之间的通信,那么就需要清楚他们之间传递信息的载体,以及对传输信息的处理.这就肯定存在客户端和服务端,通信的消息就包括确定的通信协议和传输协议,通信协议用来解析传递的消息而传输协议用来确定怎样传输信息.其实最麻烦的也就是这些协议的制定,因为很难达成统一,即使W3C组织做了大量的努力.在选择信息载体的时候,毫无疑问选择了XML,因为它作为信息载体是在合适不过了,同时基于XML的解析技术已经很成熟.接下来考虑的就是如何在客户端和服务端解析网络传递的信息.Web服务是通过从部署的服务器上获取服务的一个浅复制来使用提供的功能.也就是说,这个服务的客户端是固定的针对特定的URL,同时必须等待部署到服务器之后才能使用.而WCF里面的解析模式不一样,它完全做到了无关性,通过网络传递的只是标签,通过解析,再把结果传递回来,网络只是起到了一个传递部分关键信息的作用,它只是一个管道,对于里面传送的是什么信息,它不关心.同时对于信息本身它必须知道底该被谁接受,跟谁交互,这也就是所谓的终结点地址.现在已经解决了用什么承载信息,怎样传输信息.在WCF中关于处理信息目的地的问题采用了配置文件,这样大大增加了它的灵活性.对于信息控制了,客户端和服务器端存在一些对扩展,使用这些扩展可以达到控制网络信息的作用.在网络上传递的信息格式遵循SOAP协议,而传输协议一般遵循HTTP,UDP等.由于SOAP协议定义包含信封,消息头和内容,当被应用到WCF中,一般会把目的地的信息放到信封里面,这也很贴切,把服务端的调用信息放在内容中,由于它所承载的全部都是字符信息,其值的意思为要调用服务端方法的名称以及参数值,而响应则是包含方法名称和返回值.
整个过程很简单,余下的就是在客户端和服务端添加扩展,比如说对调用方法的过滤,对参数的过滤等等.同时让客户端的开发完全脱离服务端,只要契约相同就可以通信,契约其实也就是解析网络信息的依据.
简单来说,就是确定通信双方以及他们之间交流的载体.对于载体的控制,在物理传输媒介上下功夫,就好像隔鞋瘙痒,解决不了问题.如果您能制定自己的通信协议,您也可以开发类似WCF的架构技术,如果自己开发这样的分布式技术,最难的还是效率和可扩展性问题.这不是一般人能做到的,同时它也超越了以前的任何一中分布式技术,不论是从市场的反馈上看,还是从开发的效率上看.更值得学习的是它的推广方式,这就是微软模式,不得不打心眼里佩服.