Internet 正在向下一代 Web 站点快速演进,今天的 Web 站点仅能为浏览器提供用户界面,而下一代可编程 Web 站点直接将企业、应用程序、服务和设备彼此链接。这些可编程 Web 站点将不只是被动访问的站点,而将成为可重用的智能 Web 服务。Microsoft®.NET框架中的Web Service就是提供集中式Web服务的解决方案。

在我们以前的项目开发中,开发了各种各样的Com组件,我们能不能让这些Com组件的提供Web服务呢?这样我们即能重用组件,又可以享受到Web Service的优点,何乐而不为呢?

 

有两种方法可以实现Com组件提供Web Service:

.Microsoft® SOAP Toolkit

.创建组件的.NET代理类

 

Microsoft® SOAP Toolkit下载

Microsoft Soap Toolkit 3.0提供了一整套的COM


 

选择生成文件的路径。

 

点击下一步

 

9.

 

v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">

 

生成文件成功。

 

 

 

打开生成文件的目录,可以看到多了以下文件:

 

 

 

 

注册IIS监听

 

1.打开IIS MMC,新建一个虚拟目录指向刚才生成的文件地址。

 

2.进入Windows cmd,进入C:\Program Files\MSSOAP\Binaries输入下面命令 c:>soapvdir.cmd UPDATE DLLServices改命令注册一个ISAPI DLL来监听请求。

 

 

 

这样Com组件就开始提供WEB服务了,下面来测试一下

 

打开VB,创建工程,添加Soap引用

 

 

添加如下代码:

 

Dim oSoapClientDim nResult Set oSoapClient = CreateObject ("MSSOAP.SoapClient30")If (Err <> 0) Then            MSgBox "Initialization of the SOAP Toolkit failed."            ReturnEnd If Call oSoapClient.MsSoapInit ("http://localhost/DLLServices/DLLService.WSDL", "MyService", "")If (Err <> 0) Then            MSgBox "Error initializing the WSDL file."            ReturnEnd If nResult = oSoapClient.Add (3, 4)MsgBox "Result of 3+4 = " CStr(nResult) Set oSoapClient = Nothing 如果能看到结果则表示使Com组件提供Web Service成功  

 

 

 

创建组件的.NET代理类

 

还是使用上面例子中的VBDLL.dll组件。

 

微软的.NET Framework提供了一个工具Type Library Importer (Tlbimp.exe),用来将Com组件封装为一个.NET的assembly,这样就可以在VS.NET中使用封装好的VBDLL.dll的.NET代理类了。

 

 

 

1.生成代理类

 

 F:\SW\MS.NET\Web Services\VB>"D:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin\tlbimp.exe" vbdll.dll /out:vb_proxy.dll

 

Microsoft (R) .NET Framework Type Library to Assembly Converter 1.0.3705.0

 

Copyright (C) Microsoft Corporation 1998-2001.  All rights reserved.

 

Type library imported to F:\SW\MS.NET\Web Services\VB\vbdll_proxy.dll

 

这样就在当前目录下生成了vbdll_proxy.dll的.net assembly,

 

我们使用Intermediate Language Disassembler (Ildasm.exe)可以看到assembly的信息,

 

 

 

 

 

2.打开VS.NET,新建ASP.NET Web Service

 

 

 

 

3.添加vbdll_proxy.dll的引用

 

 

4.添加Web方法

 

[WebMethod]

 

public int Add(int a,int b)

 

{                                                        vb_proxy.clsAddClass obj=new vb_proxy.clsAddClass();

 

          return obj.Add((short)a,(short)b);
}

 

5.编译Web Service。

 

6.测试,同上列

 

 

 

结束语:

 

两种方法都可以实现Com组件提供Web服务,相比起来第二种方法简单一些。
posted on 2009-06-07 12:55  yxbsmx  阅读(164)  评论(0编辑  收藏  举报