从WCF的全称来分析——Windows Communication Foundation,顾名思义,他就是解决分布式互联系统中各相互独立的子系统如何交互的问题,换句话说,它实际上就是提供 一个基础构架(Infrastructure)实现Application的通信问题。我们前边已经提到,各个子系统之间是通过XML Message进行交互的,所以我们可以 把WCF看成是一个完全处理XML Message的构架,WCF的所有的功能都是围绕着Message来展开的——如何把一个Service的调用转或称一个Message Exchange(Service Contract);如何实现一般的.NET对象和能够容纳于XML Message中的XML Infoset之间的转化(Serialization和Deserialization);如何实现承载数据的XML Infoset和能够用于网络传递的字节流(Byte Stream)之间的相互转化(Encoding和Deconding);如何保证置于Message中数据的一致性和防止被恶意用户窃取以及验证调用Service和通过Service的合法性
使用Web服务的每一种主要语言或平台都把与自身相关的特性集合在一个名字下,Java开源开发人员使用Axis,PHP阵营则使用PEAR,而基于微软工具的开发则使用WCF (Windows Communication Foundation).
WCF曾被称为Indigo,实际上不只是一个Web服务项目,它的目的是要微所有的分布式系统技术提供一种保护伞,其核心是一套面向服务的API。
现在,.NET框架是利用微软工具开发应用程序的最先进的方法。它已经为解决一系列C/S交互场景提供了办法。
比如,ASP.NET Web Services(ASMX)提供了通过Web服务开发应用程序接口的最简单的形式,而.NET Remoting则是使.NET和.NET应用程序交互的核心。
但在另一方面,很多系统不是构建得超出了.NET框架上下文的范围,就是得通过其它办法来进行特殊处理。
对于需要Web服务标准支持(WS-*说明书)的那些应用程序,微软则使用了Web Services Enhancements (WSE)。而对于那些遗留系统,经常用到的分布式交互技术则是用于异步通讯的Microsoft Messaging、COM+以及Microsoft's Host Integration Server。
你应该注意到所有这些场景都有一个相同的主题:分布式应用的通信。但是,很显然,每一种技术都用到不同的方法或技术来解决这个问题。而WCF背后的初衷就是针对应用程序中用到的所有通信接口为开发人员提供一步到位的方法。
WCF是对.NET技术的一个补充,而非现在.NET框架的替代品。但当你仔细思考把微软的分布式技术都统一到同一个屋檐下会达到怎样的效果后,你就会领悟到为什么说WCF/Indigo是简化创建面向服务设计的重要组成部分,以及它为什么是未来微软的操作系统Vista的一个基础。
在使用WCF时,你不仅只需要懂得一种方法就足以把很多应用作为服务暴露出来,而且你还可以用同样的方法来对付当前技术本身的底层细节。
用WCF服务使能化应用程序的真正概念并非与那些用来运行Web服务的概念不同,真正的不同之处我们在下文中会体现出来。

浙公网安备 33010602011771号