ting、Enterprise Service、WSE、MSMQ这些技术的并集,虽然在复杂度上WCF很可能比这些技术更加复杂,因为WCF是面向服务构架的,所以对于上述的麦当劳餐饮业务的例子,如果使用WCF就能够很好的实现不同平台,不同设备之间的安全性、可依赖性、互操作性等特性,而因为WCF对现有技术的封装,开发人员可以无需关心ASMX,、Net Remoting这些技术的实现细节。
18.2 WCF基础
在了解了WCF的概念和通信原理,以及为什么要使用WCF之后,就能够明白WCF在现在的应用程序开发中所起到的作用,WCF能够实现不同技术和平台之间的安全性、可依赖性和用户操作性的实现,对大型应用程序开发起到促进作用。
18.2.1 服务
服务是一组公开的功能的集合。在
软件开发领域,从传统的面向过程,到面向对象,然后历经了面向组件的开发一致发展到当今的面向服务开发。
1.WCF服务
面向服务开发也并不是什么新技术,面向服务开发只是之前的面向过程、面向对象、组件开发和面向服务开发一种补充。面向服务开发有如下优点:
? 重用性:面向服务的开发提升了应用程序的重用性,通过创建可用于服务的接口能够实现不同
应用程序中使用相同或类似程序实现的代码。
? 注重效率:面向服务的开发可以使用现有的服务的集合,这样能够让开发人员能够快速的进行
458
数据交换和开发,而无需关注底层服务的实现。
? 松耦合:面向服务的应用程序是独立于服务执行环境的应用程序,这样就让应用程序成为一个
松耦合的应用。
? 职责划分:通过使用面向服务的开发能够进行职责的划分,例如经理和业务人员只需关心业务
和统计数据即可,开发人员能够关注应用程序的开发。
一个面向服务的应用程序会将众多的服务集成到一起,形成单个逻辑单元,如图18-4所示。
图18-4 面向服务的应用
WCF中的服务可以是本地的,也可以使用远程的服务。对于客户端而言,客户端只需要通过使用服务来实现应用程序功能,这些客户端也可以是不同的类型,包括Windows应用程序,ASP.NET应用程序甚至是移动终端。
对于客户端而言,客户端是通过使用消息与服务器进行通信。消息可以直接在客户端与服务之间进行传递,也可以通过中间方进行传递。在服务器和客户端之间的消息是通过SOAP进行通信的,SOAP与Web应用开发中不同的是,Web应用通常需要某个具体的协议进行相应功能的实现,例如HTTP、FTP协议等,而在WCF中,WCF服务可以在不同的协议中进行传递,并不局限于某个协议。正是因为如此,客户端与服务器之间的要求往往不是必须的,这也就是说,WCF客户端可以与一个非WCF服务器进行信息通信,而一个非WCF客户端也可以与一个WCF服务器进行信息通信。
为了保障WCF服务器的安全性,WCF服务器不允许直接对服务的调用。对于WCF客户端,只允许使用代理(Proxy)将调用信息转发给服务器。代理向客户端公开的操作和服务器端的操作相同。
2.服务的执行边界
WCF能够让客户端跨越执行边界与WCF服务进行通信,WCF客户端和WCF服务器进行通信必须使用代理与服务进行通信,即使是与本地服务进行通信,如图18-5所示。
图18-5展示了WCF客户与本机服务进行
通信,WCF不仅能够支持不同应用程序域之间的服务的访问,也能够支持不同进程之间的服务的访问。这就让WCF客户端可以调用一个应用程序中的服务,也可以调用不同应用程序甚至不同进程中的WCF服务。不仅如此,WCF还支持客户端对远程计算机的中服务的调用,在远程服务调用中,WCF允许客户端可以跨越Intranet或Internet的边界进行远程服务的访问和调用,如图18-6所示。
459
图18-5 WCF与本机服务进行通信 图18-6 WCF与远程服务进行通信
图18-6展示了WCF客户端与远程服务进行通信,无论WCF客户端是与