应用WSDK - 实践WebServices的路由和路由选择(下)

原创 2002年11月19日 08:54:00

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 应用WSDK 实践WebServices的路由和路由选择

 

小气的神

2002-11-18

 

Article Type: In-Depth 

难度等级:8/9       

版本:3.46

2.     定义路由文件和建立虚拟链接。

这里我们需要做下面两步工作,第一建立一个名为ReferralSite的虚拟目录,这个Web Application将作为一个路由器(Router),这个应用中没有任何实现文件,只有一个web.config文件进行定义httpHandlers来扑捉用户请求的虚拟WebServices — ReferralUrl.asmx,另外一个是ReferralCache文件,这个文件定义了具体的路由格式。

web.config 文件如下:

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

 

     <system.web> 

         <!-- This installs the HttpHandler which implements the WSDK's SOAP router -->

         <httpHandlers>

              <add verb="*" path="ReferralUrl.asmx"

 type="Microsoft.Web.Services.Routing.RoutingHandler,Microsoft.Web.Services,

Version=1.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" />

         </httpHandlers>

        

     </system.web>

    

    <!-- This is the WSDK configuration section -->

     <microsoft.web.services>       

         <diagnostics>

            <trace enabled="false" input="d://inputTrace.config"

 output="d://outputTrace.config" />

        </diagnostics>

         <referral>

              <cache name="ReferralCache.config" />

         </referral>

        

     </microsoft.web.services>

</configuration>

 

ReferralCache文件如下:(ReferralCache.config )

 

<?xml version="1.0" ?>

<r:referrals xmlns:r="http://schemas.xmlsoap.org/ws/2001/10/referral">

  <r:ref>

    <r:for>

      <r:exact>http://localhost/MyProject/WSDK/ReferralSite/ReferralUrl.asmx</r:exact>

    </r:for>

    <r:if />

    <r:go>

      <r:via>http://localhost/MyProject/WSDK/WSReferral/Math.asmx</r:via>

    </r:go>

    <r:refId>uuid:5D2786DD-4087-4fbe-B166-406158638867</r:refId>

  </r:ref>

</r:referrals>

简单的说,就是从ReferralUrl.asmx转变到真正的Web Services文件Math.asmx.

 

 

3.     产生客户端进行访问

 

这里我们需要创建一个客户端,其实客户端的代码可以不发生变化,同上面测试时用的一样。我们需要做的是什么,是让我们的客户端请求一个虚拟不存在的网络资源,也就是上面我们设立的ReferralSite/ReferralUrl.asmx ,然后请求会经过路由器通过Referral到我们第一步测试WebServices时的WSDK/WSReferral/Math.asmx 如下图示:

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

 

具体的做法是我们增加一个app.config 文件,这样在我们使用Proxy类时,我们改变它请求的链接地址,让它访问ReferralUrl.asmx

 

app.config 文件

 

<configuration>

    <appSettings>

        <add key="MathURL"

            value="http://localhost:8080/MyProject/WSDK/ReferralSite/ReferralUrl.asmx"  />

    </appSettings>

</configuration>

 

Proxy 类的代码进行如下的修改(或者不用修改)

 

    public Service1() {

    string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["MathURL"];

            if ((urlSetting != null)) {

                this.Url = urlSetting;

            }

            else {

                this.Url = "http://localhost/Myproject/WSDK/WSReferral/Math.asmx";

            }

        }

 

完成上述操作之后,保存并编译运行F5,我敢保证运行在一台机器上,其计算5+6的速度是非常缓慢的,但如果没有错误,你可以看到和你第一次测试时一样的结果,但是如果你有Dump调试信息,或是进行Trace那么你从下面的两幅截图中可以非常清楚的看到究竟发生了什么J

 

 

 

 

事实上你也可以将ReferralSite分布到另外一部机器上来做这个试验,效果是同样的,但我相信你会发现更多。这里我们看到实现一个WS-Routing,我们要做两件事,第一,建立一个Web Application设立一个Router,第二,我们要建立一个Referral Cache,这里面包含着要重定向的资源的URL,而它是一个XML文件进行描述的。

 

从这里我们也看到这样的WS-Routing WS-Referral 类似于一种路由和中转,未来的WSDK支持一种叫”Content-Based Routing”的路由,这意味着我们可以从一个请求的SOAP Message的头信息(Headers)发现在消息体(message Body)中定义的路由信息。当消息体中的路由不断发生变化时,我想那就是一种非常奇妙和有趣的应用了。微软许诺之后的版本中会包含这个功能,我想我也非常的乐意在未来向你展示这个许诺的功能,的确很诱人。

 

好了,我想到了要暂时告别WSDK Routing功能的时候了,随着WSDK版本的不断更新,微软又会支持更多的有关Web Services的新协议。我相信在学习WSDK WS-XXXX的过程中我们遇到失败和变化,但其中的体验依然值得拿出来分享。我仍然坚信:这个过程中的任何分享都将是十分快乐的一种体验。最后祝编程快乐!

 

      

相关文件下载: [WSDKRouting_Referral.zip 38K]

 

特别:

本文原创,CSDN署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议,请发电子邮件给new2001@msn.com

路由选择算法----JAVA版

import java.io.*; import java.util.*; public class RouteDesign { final static int maxnum = 100; ...
  • down_load_111
  • down_load_111
  • 2016年11月09日 23:44
  • 1513

思科CCNA第二学期期末考试答案

关于数据包通过路由器传输时的封装和解封的叙述,下列哪三项是正确的?(选择三项。) 路由器修改 TTL 字段,将其值减 1。 路由器将源 IP 更改为送出接口...
  • u014253173
  • u014253173
  • 2015年01月30日 12:37
  • 6041

最佳路由选择的原则与步骤————管理距离和度量值

路由表选择出现多条相同目的路由的原则与步骤: 1、比管理距离(存在多种路由协议的情况下) 2、比度量值(一种路由协议的情况下,不同种路由协议之间的度量值不能做比较,比如rip度量值为跳数;ospf度量...
  • chiyuwei1766
  • chiyuwei1766
  • 2015年08月07日 09:57
  • 4239

路由控制和路由选择

  • 2013年06月09日 09:45
  • 2.69MB
  • 下载

蚁群算法在路由选择中的应用

  • 2009年02月07日 11:07
  • 520KB
  • 下载

路由方式,IP路由选择过程

一、路由及路由方式      路由这个术语用来说明将数据包从一台设各通过网络发往另一台处在不同网络上的设备。路由器并不关心这些主机,它们只关心网络和通向每个网络的最佳路径。路由器可以从相邻的路由器或...
  • fansongy
  • fansongy
  • 2011年08月22日 21:11
  • 7808

Cisco OSPF 外部路由记录的路由选择

OSPF 外部路由记录有E1 E2 N1 N2 4种类型。 如果一台路由器同时收到了到达同一目的的这4种路由记录,那么哪条或者哪几条才会被加入路由表呢? 见下图: OSPF route...
  • delicioustian
  • delicioustian
  • 2011年08月28日 20:57
  • 3498

路由选择原理 路由是将对象从一个地方转达发到另一个地方的一个中继过程   学习和维持网络拓朴结构知识的机制被认为是路由功能。渡越数据流经路由器进入接口   穿过路由器被移送到外出接口的过程,是另一项单独的功能,被认为是交换/转发功能。路由设备必须同时具有路由和交换的功能才可以作为一台有效的中继设备。

  • 2009年10月31日 18:53
  • 26KB
  • 下载

【软件测试】网络应用篇:第三章 网络地址转换与路由选择协议—NAT、RIP、OSPF、BGP

第三章:网络地址转换与路由选择协议—NAT、RIP、OSPF、BGP一、相关概念简述:NAT:网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,...
  • lwlliang
  • lwlliang
  • 2011年03月14日 00:14
  • 1300

路由选择、路由协议与路由算法

本文旨在区分清楚路由选择、路由协议和路由算法的关系。然后讲解常用路由协议和路由算法。什么是路由选择百科的说法: 路由选择是指选择通过互连网络从源节点向目的节点传输信息的通道,而且信息至少通过一个中...
  • a1414345
  • a1414345
  • 2017年05月20日 15:52
  • 647
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:应用WSDK - 实践WebServices的路由和路由选择(下)
举报原因:
原因补充:

(最多只允许输入30个字)