日期:2012-09-22  浏览次数:20398 次

摘要:如何从 Visual Basic 6.0 和 Visual Basic .NET 访问 Web 服务,以及如何将现有的 SOAP 应用程序转换到 .NET 平台。

目标
了解 Microsoft® Visual Studio® .NET 中的 SOAP 工具
回顾使用 SOAP 和 Visual Basic® 6.0 访问 COM/COM+ 组件
从 Visual Basic .NET 访问 Web 服务
将 SOAP Toolkit 应用程序迁移到 Web 服务
前提条件
了解什么是 Web 服务
精通并且可以访问 Visual Basic 6.0 和 SOAP,且知道如何创建 ActiveX® DLL 项目
熟悉有关 Visual Studio .NET 的基础知识
Web 服务、SOAP 和您的工具
Web 服务提供了可以通过 Internet 访问的功能,即调用 Web 服务并获取返回的结果。Web 服务的新增功能是,您现在可以连接到世界最大网络 Internet 上的服务。不过,作为一名 Visual Basic 程序员,Web 服务为您处理了繁琐的 Internet 事务。

在本文中,您将了解如何使用 Visual Studio .NET 访问 Web 服务、回顾使用 Visual Basic 6.0 和 SOAP Toolkit 2.0 创建 Web 服务的过程,还将了解如何转换现有的 SOAP Toolkit 应用程序,以便在 .NET 框架中使用 Web 服务。

本文使用的 Web 服务有一个非常简单的函数 createCustomer。它接受客户的姓名,并返回客户标识符。但是,我们不在这里讨论 Web 服务的功能,以便您可以集中精力了解如何使用 Visual Basic 6.0 或 Visual Basic .NET 创建和访问 Web 服务。

Visual Basic 和 SOAP
用户通过发送和接收 SOAP 文档与 Web 服务通信。在 Visual Basic 6.0 中,有两种方法可以创建 SOAP 文档:

通过连接字符串组合文档
使用 SOAP Toolkit 2.0 中的 SoapClient
SoapClient 不仅创建一个 SOAP 文档与 Web 服务通信,还将该文档发送到 Web 服务进行处理。

在传输的 Web 服务端,需要一个 SOAP 侦听器捕获并处理客户端发送的文档。SOAP Toolkit 2.0 包括 SoapServer,可以在侦听应用程序中使用它处理 SOAP 文档。侦听器是单独创建的应用程序,它独立于实现 Web 服务的组件。

使用 Visual Studio .NET,可以简化对 Web 服务的创建和访问。在 Visual Studio .NET 中,创建 Web 服务并不要求构造单独的侦听应用程序。在访问 Web 服务时,它会自动为您创建代理,这样,您使用 Web 服务就像访问其他任何对象一样。

Web 服务描述工具
Web 服务描述语言 (WSDL) 是一种 XML 语言,它是专门为描述 Web 服务而设计的。作为使 Web 服务成为开放式标准的过程的一部分,WSDL 已连同 SOAP 一起提交到 W3C。对服务的 WSDL 描述可以包含 wsdlSpec tModel,它为服务提供创建和发送 SOAP 文档所需的全部信息。以下是支持 createCustomer 函数的 wsdlSpec tModel 文件的示例:

<?xml version='1.0' encoding='UTF-8' ?>
<!-- Generated 06/25/01 by Microsoft SOAP Toolkit WSDL
File Generator, Version 1.00.623.1 -->
<definitions name ='cust'
targetNamespace = 'http://tempuri.org/wsdl/'
xmlns:wsdlns='http://tempuri.org/wsdl/'
xmlns:typens='http://tempuri.org/type'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:stk=
'http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<types>
<schema targetNamespace='http://tempuri.org/type'
xmlns='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC=
'http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
elementFormDefault='qualified'>
</schema>
</types>
<message name='Custservices.createCustomer'>
<part name='First' type='xsd:string'/>
<part name='Last' type='xsd:string'/>
</message>
<message name='Custservices.createCustomerResponse'>
<part name='Result' type='xsd:string'/>
</message>
<portType name='CustservicesSoapPort'>
<operation name='createCustomer'
parameterOrder='First Last'>
<input message=
'wsdlns:Custservices.createCustomer' />
<output
message='wsdlns:Custservices.createCustomerResponse' />
</operation>
</portType>
<binding name='CustservicesSoapBinding'
type='wsdlns:CustservicesSoapPort' >
<stk:binding preferredEncoding='UTF-8'/>
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http' />
<operation name='Add' >
<soap:operation soapAction=
'http://tempuri.org/action/Custservices.Add' />
<input>
<soap:body use='encoded'
namespace='http://tempuri.org/message/'
encodingStyle=
'http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='e