【IT168技术文档】
下面主要通过项目实例来具体阐述如何实现wse路由和一些项目开发中的细节。本人水平有限,有不对的地方,请朋友们不吝赐教。
在开始项目之前,先了解一下路由的概念,所谓"路由",是指把数据从一个地方传送到另一个地方的行为和动作,它通常包括两种行为:选择非常好的路径和通过网络交换数据。我们平时使用的路由器就是为了此项功能而产生的机器。那么wse为何要具备路由的功能呢?这个必须是我们首先要弄明白的问题。
对SOA不了解或者没有相关开发和运维经验的朋友可能体会不出wse为何要有路由功能的理由,从表面看来,完全没必要嘛!客户端指定一个服务端,双方交换数据就可以了!非也,在SOA中,要面对的往往是部门与部门之间,企业与企业之间,机构与机构之间的系统协作问题,此时如果提供服务的一方出现维修问题,会影响到很多客户端,而这些客户端可能分布在不同的个人或者机构中,中间一些协调和沟通问题会很快让你进入hell,而有些客户端系统对于系统的稳定性要求极高。所以如果服务端不做伤筋动骨的改动,应该尽最大可能保持客户端的正常运行。Wse的路由功能就是为了解决此类问题的方案之一。一句话它能够使服务端能够在对服务进行维护的时候,经过简单的配置,改变soap消息的原有路由,从而保证客户端的稳定运行。
要实现wse的路由功能,有两种手段:第一是通过配置文件,这个配置文件在wse框架中被称为referral cache.另外一种是基于soap消息内容来实现。本文首先解决如何通过配置文件来实现wse路由。
* 通过配置来实现wse路由
实现wse路由,需要两个大的步骤:
1. 准备一台路由服务器(以后我们称之为R),并对其进行配置
2. 配置一个Referral Cache,这个文件定义了soap消息的路由信息
我们通过以下情景来实现项目演示:目前我们存在一个服务,所在服务器为S1,因为路由对客户端没有影响,所以我们只模拟一个客户端,服务器为C,我们目前的路由情况如下图所示:

首先我们看一下使用了路由的网络服务,路由,和客户端程序的特点。
网络服务:使用了路由的网络服务必须接受来源于路由服务器R的请求,因此需指定网络服务的SoapActor Attribute,为路由的URL或者接受所有的来源。有关SoapActor的描述如下:一个SOAP消息从始节点到终节点的过程中,可能沿着消息路径经过一系列SOAP中间节点。一个SOAP中间节点是一个可以接收转发SOAP消息的应用程序。中间节点和终节点由URI区分。可能SOAP消息的终节点并不需要所有部分,而在消息路径上的一个和几个中间节点可能需要这些内容。头元素的接收者扮演的角色类似于一个过滤器,防止这些只发给本接受者的消息部分扩散到其它节点。即一个头元素的接收者必须不转发这些头元素到SOAP消息路径上的下一个应用程序。同样的,接收者可能插入一个相似的头元素。SOAP actor全局属性可以用于指示头元素的接收者。SOAP actor属性的值是一个URI。省略SOAP actor属性表示接收者是SOAP消息的终节点
对网络服务的创建和设计需要注意的地方如下图:

除了此处,网络服务和其他的使用wse3.0的服务,没有区别。
再看一下路由,路由程序是一个非常特殊的程序,他可以没有任何程序,只包含两个配置文件,这里主要讲述一下如何设置这两个配置文件
1.首先我们先对创建的路由网站做wse设置,可以采用wse与vs2005的集成工具。如下图所示: