WCF开发工具是一个主要作用于.NET Framework 3.5的开发插件。那么WCF运行机制是个什么样的呢?它应当如何正确的操作才能保证运行顺利呢?在这里我们将会针对WCF运行机制做一个详细的介绍。#t#
1、WCF运行机制是怎样运行的?
如果从宏观的角度来分析WCF的运行机制,它的实现并不复杂。WCF的体系架构是基于一种拦截机 制来实现的,负责传递和拦截消息的组件为通道,在客户端发出对服务端服务的调用时,首先会通过一个服务代理对象,将调用方提供的对象序列化到消息中,然后 该消息则通过通道进行传递。通道不只是包括一个,而是多个通道对消息进行处理,包括传输、消息编码、管理会话、传播事务等,但最底层的通道总是传输通道。 这些通道的构成形成了一个通道堆栈。由于对象已经被序列化,因而此时通道传递的消息可以跨进程或机器进行传递,利用传输通道传递到服务端。服务端的构成与 客户端基本相似,仍然是通过通道栈中最底层的传输通道接收消息,然后解析消息编码,并一层层地往上传输。在服务端的通道栈之上,则是一个分发器 (Dispatcher,或者说是调度器),它会首先对消息进行检查,然后选择一个客户端要调用的操作。在这个过程中,消息会被反序列化。
下图说明了WCF的整个运行过程:
由 于WCF通过通道的方式传递消息,整个通道同时担当了侦听器和拦截器的功能,它可以根据服务的定义,在方法执行的前或后执行不同的操作,例如事务、会话管 理、安全等。这些操作在WCF中,大多数都可以以Attribute的方式应用到服务契约上,这样的实现方式,就类似于采用了AOP(面向服务编程)的方 法为服务提供了大量的基础功能,有助于简化服务开发者的工作。
2、WCF运行机制决定我们的选择
在Windows平台 下,尤其是在.NET平台下开发面向服务的应用程序,或者开发分布式系统,最佳选择就是WCF。为什么呢?原因就在于WCF涵盖了之前微软推出的所有用于 分布式开发的技术,包括Remoting、Web Services、WSE、MSMQ等,并以一种统一的编程模式来实现。
WCF既支持 具有互操作性的Web服务,也能够实现.NET客户端与.NET服务端的通信,提供了分布式事务的支持,同时在安全性上,它完全遵循了WS-*的标准,此 外,它还支持队列服务,可以非常方便地利用消息队列完成异步操作与脱机调用。而这些功能,以前的技术都只是部分的实现。如下表所示:
WCF同时也使得面向服务编程更加简单而统一了。如果采用旧有的技术,由于各种技术的编程模型完全不一致,使得程序的迁移非常的困难。例 如,最初采用.NET Remoting技术开发的分布式系统,由于业务需求的变化,要求发布具有互操作性的Web服务,就需要重新定义服务。并且,客户端的调用方式也发生了变 化,需要添加Web引用,通过UDDI去发现服务。
采用WCF运行机制则不然。WCF引入了用通道,它封装了消息的通信细节,例如编码、事务处 理、安全等,然后又通过引入绑定的概念,封装了通道的组成顺序与处理细节。最后,引入了独有的Endpoint元素,集成了地址、绑定和契约之间的“三位 一体”,以最简单的方式定义和发布服务。