加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 03:00:00 所属栏目:安全 来源:网络整理
导读:? 应用 WSDK - 实践 WebServices 的路由和路由选择 ? 小气的神 2002-11-18 ? Article Type: In-Depth ? 难度等级: 8/9 ??????? 版本: 3.46 2. ???? 定义路由文件和建立虚拟链接。 这里我们需要做下面两步工作,第一建立一个名为 ReferralSite 的虚拟目录

?应用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 如下图示:

?

?

?

具体的做法是我们增加一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读