VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置

序言

Webservice发布,访问,和站点配置是一套活儿,若中间某个环节出了问题,则一套活儿很难进行下去的,所以把体会到的写成笔记。

对Toolkit3.0描述的webservice认识

对MS Soap toolkit 3.0的理解是:表相的webservice体现是 WSDL  和 WSML 二个文件,它们之间的关系一个是服务内容,一个是获得服务内容的 type 定义,而任务是COM通过SOAPIS30.DLL,借助IIS服务器的 ISAPI能力完成的。

如果WSDL是下面的这张服务能力的列表

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第1张图片

那WSML就是下面这张 type 列表

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第2张图片

而实现则是由COM + (SOAPIS30.DLL+(ISAPI+IIS)) 完成的。

现在的.NET平台上,WSDL和WSML,合二为一,封装成为 ASMX 文件。

任务分解

基于上面的分析,任务分解为:

1. 安装 ms soap toolkit3.0 套件,

2. 用regsvr32 soapis30.dll注册dll,

3. 在IIS上建站点,为WSDL文件创建映射,模块选用 soapis30.dll

4. 用VB6写COM,并用regsvr32注册。

5. 用 WSDL generator 将 COM 创做出 WSDL和 WSML 文件,放置到站点下

6. 在VS2022上写VB.NET窗体(.NET Framework)程序访问webservice

7. Delphi7调用soap toolkit的soapclient功能访问webservice

具体实现

1. 安装 soap toolkit,全部默认安装,直接yes到底

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第3张图片

2. 注册控件soapis30.dll

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第4张图片

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第5张图片

3. 配置IIS站点

找到站点上拟存放WSDL和WSML文件的地方,没有的话创建文件夹,然后添加映射,让这个地方的*.WSDL请求,用SOAPIS30.DLL去处理。

站点的dll要启用isapiMoudle

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第6张图片

站点的WSDL要用soapis30.dll去处理,它是一个isapi的dll

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第7张图片

4. 用vb6写COM

在VB6中创建activex DLL,加上一个类 Sample1.cls,在类中写两个函数,然后生成dll,在CMD下将它注册到系统中。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第8张图片

5. 用WSDL generator将 4 中的dll生成wsdl和wsml

这一步稍细一些。点击 next

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第9张图片

这一步还是next(上面的选择框是选择站点上已有配置用来修改的,不勾选)

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第10张图片

按下面的说明填写

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第11张图片

自己DLL中的类和方法就都提示出来了。勾选它们。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第12张图片

选择访问点位置,

这个位置会被写入WSDL和WSML文件中,并不是把生成的WSDL和WSML文件自动存放到那里。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第13张图片

这一页默认,不用修改。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第14张图片

点击next开始生成,生成后产生下面几个文件。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第15张图片

这原本在Select COM那页起名字时是DocSample1,我再做生成时起名字是 TestWEBservice,所以它不是 DocSample1了。名字自己取,没有限制。

生成的这几个文件要自己考贝到站点下,它不会自动发布过去。VS2022会自动完成站点发布,无需人为干预,后期的东西还是为用户简化了许多工作。

6. 在VS2022上写VB.NET窗体(.NET Framework)程序访问webservice

创建VB.NET WINDOWS .netframwork 窗体工程

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第16张图片

右键选中项目名,然后添加服务引用。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第17张图片

地址处是我输入过的,所以下拉中可以看到。以asmx结尾的是用vb.net写的webservice,以WSDL结尾的是VB6写的webservice

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第18张图片

站点上WSDL服务在左侧,点开后右侧是操作方法,即dll中的那些Public Function,左下侧是命名空间。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第19张图片

按命名空间和服务定义object,通过object调用其中的方法(方法会自动提示出来)

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第20张图片

7. Delphi7调用soap toolkit的soapclient功能访问webservice

建空白窗体项目,引用microsoft soap type library v3.0

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第21张图片

类和接口的type在 mssoarlib30_tlb.pas中,在unit1.bas的use中把它use进去。

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第22张图片

窗体上放置两个 Edit ,一个Button1

VB6 COM webservice发布,VB.NET和Delphi 7 对webservice访问,及MS Soap Toolkit 3.0在IIS上的ISAPI配置_第23张图片

在Button1下写代码

procedure TForm1.Button1Click(Sender: TObject);
var
    mySoapClient3: OleVariant;
begin
    mySoapClient3:= CreateOleObject('MSSOAP.SoapClient30');
    mySoapClient3.mssoapinit('http://192.168.3.113/Soap3DocSamples/DocSample1/Server/TestWEBservice.WSDL', 'TestWEBservice', 'Sample1SoapPort');
    Edit2.Text:= mySoapClient3.EchoString('Tom');
    Edit3.Text:= mySoapClient3.AddNumbers(5,3);
    mySoapClient3:= Null;
end;

这东西本身不复杂,但技术链太长了难免中间一个小问题会阻断练习。继续学习!

你可能感兴趣的:(VB6发布Web服务,VBNET使用web服务,Delphi,web服务)