1、WCF概述
一、什么是WCF
在了解什么是WCF之前,我们先看一个场景。
一家汽车租赁公司决定创建一个新的应用程序,用于汽车预订
该租车预订应用程序的创建者知道,应用程序所实现的业务逻辑必须能够让公司内外运行的其他软件访问
-运行在windows桌面上的呼叫中心的客户端应用程序;
-基于j2ee服务构建、在非windows系统上运行的现有预订应用程序,由于最近与另一家汽车租赁公司合并,此现有系统必须能够访问新应用程序的逻辑,以便为合并后公司客户提供一致的体验。
-运行在各种平台上的合作伙伴应用程序,每个应用程序分别位于一个与该汽车租赁公司有业务合作的公司内,合作伙伴可能包括旅行社、航空公司,以及具有租车预订业务需求的其他组织。
下面看这张图片
上面的需求主要面临三个方面:
-互操作性
-安全性
-事务性
那么如果没有WCF,应用程序可能会使用多种现有的.NET Framework技术
1、ASP.NET Web 服务(ASMX)。
这种技术用于与基于 J2EE 的现有预定应用程序,以及与 Internet上的合作伙伴应用程序进行通信。 因为目前大多数平台都支持基
本的Web 服务,所以在WCF 发布之前,这是实现跨供应商互操作性的最直接的方法。
2、.NET Framework 远程处理。
这种技术可用于与呼叫中心应用程序进行通信,因为二者都是建立在.NET Framework 之上的。远程处理专门为紧密耦合的 .NET 到 .NET 通信而设计,因此它为本地网络中的应用程序提供了无缝而直接的开发体验。
3、企业服务
租车预定应用程序使用该技术来管理对象生存期和定义分布式事务。在与此应用场景中的任何其他应用程序通信和集成时,这些功能会很有用,但是企业服务仅支持有限的一组通信选项。
4、WSE
可与 ASMX 一起使用,以便与基于 J2EE 的预定应用程序以及合作伙伴应用程序进行通信。它实现了最新定义的一些Web 服务协议(统称WS-* 规范),因此只要相关所有应用程序都支持这些新规范的兼容版本,WSE 就可提供更加灵活的 Web 服务安全性。
5、Microsoft 消息队列(MSMQ)。
用于与基于 Windows 的合作伙伴应用程序进行通信,这些应用程序对数据传送、工作量分离以及应用程序生存期均要求有保证。消息队列提供持久稳定的消息传送,这通常是间歇式连接的应用程序的最佳解决方案。
由于建立在 .NET Framework 之上,该汽车预定应用程序必须使用这些通信技术中的多种技术才能满足其要求。尽管这在技术上是可行的,但最终的应用程序实现起来将会很复杂,而且维护起来也很困难
通过上面的例子,我们就简单下一个WCF的定义:WCF 就是针对这种繁杂却又切实存在的情况而设计的,是公开和访问服务的 Windows应用程序的首选技术
WCF可以解决的问题
-使用WCF,该解决方案的实现就容易得多了。如图中所示,WCF可用于前述所有情况。 因此,租车预定应用程序使用这一种技术就可以实现其所有应用程序间的通信。
-WCF 可使用Web 服务进行通信,因此与同样支持SOAP 的其他平台(例如基于J2EE 的主流应用程序服务器)间的互操作性就变得简单明了。
-还可以对WCF 进行配置和扩展,以便与使用并非基于SOAP 的消息(例如像RSS 这种简单的XML 格式)的Web 服务进行通信。
-性能是大多数业务中至关重要的考虑事项。开发 WCF 的目标就是要使之成为Microsoft 所开发的速度最快的分布式应用程序平台之一。
WCF的设计目标