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

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


小气的神

2002-11-18

Article Type: In-Depth

难度等级: 8/9

版本: 3.46

不久之前,我想我们曾经讨论过有关 WSDK 问题,那时我们讨论的是有关 DIME 的问题。而当我努力的试图调试 WSDK 中接下来的功能时,我遇到了一些问题,简单的说,我总是无法实现 SOAP 的简单路由,而出现的错误是让我有些沮丧的,几乎是反反复复的 Service Unavailable 错误,更详细的是说我的 ”System.UnauthorizedAccessException: Access to the path "xxxxxx.config" is denied.” 我放大了 ASP.NET 的权限到一个让我感到吃惊的高度,但是错误依旧,我有些沮丧了,之后我的 Windows.NET 终于过期了,一个新的起点在被迫中开始了,因为我需要重新安装我的系统。

之后 WSDK 也发生了变化,因为当我拿到下一个版本的之后,所有的命名空间发生了变化,我在网络上的讨论组看到同样的论点,并且可靠的消息说这次变化之后会一直延续到 WSDK 的正式版本发布。传说是从 builds 5217 这个版本之后不再兼容以前版本的命名。具体的说,发生这样的变化:

Microsoft.WSDK.* -> Microsoft.Web.Services.*

Microsoft.WSDK.dll -> Microsoft.Web.Services.dll

Microsoft.WSDK.WSDKClientProtocol-> Microsoft.Web.Services.WebServicesClientProtocol

Microsoft.WSDK.WSDKExtension ->Microsoft.Web.Services.WebServicesExtension

Microsoft.WSDK.Configuration.WSDKConfiguration->Microsoft.Web.Services.Configuration.WebServicesConfiguration

Microsoft.WSDK.Configuration.Install.WSDKInstaller->Microsoft.Web.Services.Configuration.Install.WebServicesInstaller

  1<microsoft.wsdk> -&gt; <microsoft.web.services>
  2
  3简单的说,就是所有的  WSDK  改变成了  Web.Services  ,修改命名空间的沮丧带来了新的变化,之后很快我发现之前我遇到的问题解决了,因为问题如同秋天般的消失了,我不知道是新版本的问题,还是我重新安装了系统的问题,不过那一时刻我是快乐的  J 
  4
  5好吧,依然理一下我们的思路,开始今天的  WSDK  的应用之旅。简单的说我们需要经过一个路由选择获得我们真正需要的资源。这主要用于我们分布式的应用中,比如我们请求一个虚拟的命名资源,然后我们的服务器根据服务器上的映射定义,选择真正存在的资源,然后返回给我们相应的功能。这么说太不专业了  J  ,但我希望能清楚的说明路由  (Route)  和选举  (referral)  的解释。也就是说我们在经过  DIME  之后,今天会着重来看一下  WS-Routing  和  WS-Referral  协议的应用。 
  6
  7具体的说会是这样: 
  8
  91\.  客户请求一个不存在的资源链接请求  InputQuestion.asmx 
 10
 112\.  我们的  Server  使用  HttpHandlers  找到我们预先定义的资源的定义  Response.asmx  并将请求返回 
 12
 133\.  客户获得服务器端返回的  Web Services  描述信息。并且调用方法或功能。 
 14
 154\.  Server  返回相应功能调用的结果。 
 16
 17用图似乎更容易表示: 
 18
 19![](http://ccboy.csdn.net/jpg/20021117001.jpg)
 20
 21好了,我们来具体的看一下,这之前请原谅我的违背,因为这一篇文章中我重新使用了之前我说过的  A+B  的  WebServices  ,而上一篇文章我曾调侃的谈论有关  A+B  的  WebServices 
 22
 231\.  我们产生一个  A+B  的  Web Services 
 24
 252\.  加上  WSDK  的路由功能。 
 26
 273\.  定义映射文件和选择 
 28
 294\.  产生客户端,进行测试。 
 30
 31** 1\.  ** ** 产生  ** ** A + B  ** ** 的  ** ** WebServices  ** ** 并加上路由功能  ** ** **
 32
 33有关产生  A+B  的  Web Services  ,我将不再多说。编码测试成功之后我们做下面的工作。 
 34
 35A.  在项目中加入  Microsoft.Web.Services.DLL  的引用 
 36
 37![](http://ccboy.csdn.net/jpg/20021117002.jpg)
 38
 39B.  在  Web.config  中加入  WS-Routing  支持 
 40
 41&lt; webServices  &gt;
 42
 43&lt; soapExtensionTypes  &gt;
 44
 45&lt; add  type  ="Microsoft.Web.Services.WebServicesExtension, 
 46
 47Microsoft.Web.Services,Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
 48
 49priority  ="1"  group  ="0"/&gt;
 50
 51
 52  
 53  
 54---  
 55  
 56C.  编译  Web Services  应用,然后测试。 
 57
 58这里你可以编写一个简单的客户端进行测试,上一篇文章中我也说过用  MSSOAP Trace  进行跟踪的办法,你可以看到往返的  SOAP  信息。 
 59
 60首先产生一个  Proxy  类 
 61
 62cd\Tmp 
 63
 64wsdl /l:cs /out:Math.cs /n:Proxy /urlkey:MathURL 
 65
 66http://localhost/Myproject/WSDK/WSReferral/Math.asmx?WSDL   
 67  
 68---  
 69  
 70然后也需要加入  Microsoft.Web.Services.DLL  的引用,在产生的  Proxy  类中加入: 
 71
 72using  Microsoft.Web.Services ; 
 73
 74然后将继承的父类从原来的  System.Web.Services.Protocols.SoapHttpClientProtocol修改成Microsoft.Web.Services.WebServicesClientProtocol (具体的步骤见前文)   
 75  
 76---  
 77  
 78之后在客户端的的事件代码中加入,下面的代码: 
 79
 80private  void  btnAdd_Click(  object  sender, System.EventArgs e) 
 81
 82{ 
 83
 84int  a = 0 ; 
 85
 86int  b = 0 ; 
 87
 88int  result = 0 ; 
 89
 90a =  int  .Parse( txtA.Text ) ; 
 91
 92b =  int  .Parse( txtB.Text ) ; 
 93
 94Proxy.Service1 svc =  new  Proxy.Service1() ; 
 95
 96result = svc.add( a, b ) ; 
 97
 98string  Msg = a.ToString() + " + " + b.ToString() + " = " + result.ToString() ; 
 99
100lblRes.Text = Msg ; 
101
102}   
103  
104---  
105  
106运行结果如下: 
107
108![](http://ccboy.csdn.net/jpg/20021117003.jpg)
109
110* * *
111
112特别: 
113
114本文原创,  CSDN  署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。 
115
116如果有问题或建议,请发电子邮件给  [email protected]</microsoft.web.services></microsoft.wsdk>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus