WCF基础

该文章的内容仅仅是个人笔记之用,如有冒犯侵权问题,纯属意外,并请及时联系我。

WCF是什么?

 WCF(原代号为Indigo)是一个用于创建和运行分布式系统的技术集合,使用它能够创建安全的、可靠的、跨平台的分布式解决方案。他的面向服务的编程模型整合了.Net平台下以往全部的分布式开发技术,例如.Net Remoting, Asp.Net Xml Web Service, MSMQ, WSE和Enterprise Service等,他可以支持跨应用程序域,进程,网络的进行数据通讯,并且能寄宿在诸如IIS,Windows Service, Console, Windows Application 等多种宿主中。它适用于Vista, Xp和Windows 2003 等操作系统。

 

WCF能干什么?

在win32中,应用程序是运行在进程(Process)的线程(Thread)中的,.Net 平台出现之后,出现了AppDomain,其实就相当于在进程和线程之间又有了一层包装,类似于子进程的概念,在一个进程(或者应用程序域)中的对象能进行直接的访问和控制,但超出这个范围,便不能进行直接的访问和控制了,所以说进程(或者应用程序域)有一定的隔离作用,如果
是分布在不同网络,不同操作系统上的不同进程,他们进行通讯的难度就更大,而分布式应用程序要求的就是将原本被隔离的作用域通过一定的契约联系起来,从而达成多个系统的沟通协作。当然能实现这种目的的方式远不止WCF一个,比如在win32时代,经常使用映射内存文件来实现进程之间的互操作问题,还有在windows程序中,用windows消息wm也能实现不同进程之间的通讯问题,但这些都有局限性,因为他们不能很好的解决跨平台,跨网络问题,而WCF可以。

 

WCF的发展历程

 早在Web Service出现之前,已经有很多企业都实现了自己的EAI(Enterprise Application Integration)企业应用整合,但此时并没有被大家所公认的技术规范,所以那时的集成方案比较分散,没有统一标准,尽管有些EAI做得还比较成功,苦于没有技术规范,很难得以推广。而出现Web Service后,由于更大厂商(包括IBM,MS等)的大力支持,Soap成为大家所公认的技术规范,很快就成为了解决这一难题的制胜法宝。MS为响应这种变化,在.Net平台中推出了自身的Web Service产品,也就是Asp.Net Xml Web ervice,但这个框架在通讯安全和性能等方面存在着一些难以解决的问题,虽然后来又增加了WSE来弥补不足,但整体看来,Asp.Net Xml Web Service的不足还是显而易见的。在安全方面,WSE对Xml Web Service作了很大的改进,支持ws等网络服务的安全标准,但它作为框架的扩展,最新版本3.0还在beta阶段,而且这个扩展框架鲜为人知,服务端如果使用了WSE,那也要求客户端使用,而由于这个框架没有被广泛的推广,很可能给对客户端开发人员增加开发和部署难度。在性能方面,.Net Remoting技术相比Web Service略有优势,但学起来有一定难度,最要命的是它不能实现跨平台的操作,一个用.Net Remoting写的Service很难用Java来调用,这就使得其实用性大打折扣,MSMQ支持消息队列,但需要整合在其他系统之中,传统的Enterprise Service支持分布式事务,但同样没有Web Service的跨平台特性。此时,WCF应运而生,它整合了MS历来最优秀的分布式系统开发技术,取其精华,弃其糟粕,是分布式应用程开发技术的集大成者,它解决了跨平台的问题,同时支持安全通讯和分布式事务。由于其简单易学,在推广上也必然比较顺利,可以说WCF将开辟分布式开发技术的一个新纪元,其影响应该不在当年Web Service之下。

 

 

 

posted on 2013-12-02 20:37  CalmEric  阅读(203)  评论(0编辑  收藏  举报