摘要:如何从 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='encoded'
namespace='http://tempuri.org/message/'
encodingStyle=
'http://schemas.XMLsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<service name='cust' >
<port name='CustservicesSoapPort'
binding='wsdlns:CustservicesSoapBinding' >
<soap:address
location='http://localhost/customer/cust.ASP' />
</port>
</service>
</definitions>
wsdlSpec tModel 末尾的 <service> 标记指定将请求发送到哪个 SOAP 侦听器,在本例中,将发送到 http://localhost/cust/cust.ASP 页。此文件的前一部分说明服务可以使用的消息。
注意:SOAP 文档中使用的名称空间 tempuri.org 是一个临时名称空间,仅在开发时使用 (temporary uri)。在此服务投入到产品之前,应修改 WSDL 文件,使其拥有唯一的 URI(例如,您公司网站的 URL)。
SOAP Toolkit 对象和 Visual Studio .NET IDE 都读取 WSDL 文件。SoapClient 使用 WSDL 文件中的信息以使其作为 Web 服务的代理。Visual Studio .NET 使用同样的信息为 Web 服务生成代理类。因此,您可以执行以下操作:
调用 Web 服务的方法,好像它们是这些代理的方法。
发送消息前,根据 Web 服务的 WSDL 描述验证调用。
与代理交互,而不必熟悉 WSDL 文件的内容或要生成的 SOAP 文档。
图 1 显示了各个组件之间的关系,包括 Web 服务元语言 (WSML) 文件。只有 Visual Basic 6.0 需要此文件,并在其演练中描述此文件。
图 1:Web 服务和客户端示意图
在 SOAP 中,SOAP Toolkit 和 Visual Studio .NET IDE 执行类似的功能。所不同的是,SOAP Toolkit 对象不能提供 Visual Basic 开发人员所需的全部支持。在图 2 中,可以看到 IntelliSense® 支持(Visual Basic 程序员认为此类支持是必要的)。IntelliSense 下拉列表自动显示 Customerservices COM 对象的 createCustomer 方法。
图 2:COM/DCOM/COM+ 对象的 IntelliSense 支持
在图 3 中,您可以看到 SoapClient 为 Web 服务提供的 IntelliSense 支持。所有的 SoapClient 方法均列出,但没有显示将 SoapClient 作为代理的服务所拥有的方法(即 createCustomer)。
图 3:使用 SoapClient 的 IntelliSense 支持
如果使用 Visual Studio .NET,由 IDE 生成的代理类能够比 SOAPClient 更好地表示 Web 服务。在图 4 中,您可以看到用于访问 Web 服务的 IntelliSense 支持。createCustomer 方法是与 Web 服务交互的对象所拥有的方法之一。
图 4:Visual Studio .NET 中对 Web 服务的 IntelliSense 支持
SOAP Toolkit 2.0 概述
本节简单回顾了在上一节 Web 服务、SOAP 和您的工具中介绍的创建 Web 服务的过程。
使用 SOAP Toolkit 创建和访问 Web 服务
在 Visual Basic 6.0 中,为 Web 服务创建名为 CustCP 的新 Visual Basic ActiveX DLL 项目和名为 Customerservices 的类模块及其代码:
Public Function createCustomer(ByVal First As String, _
ByVal Last As String) As String
createCustomer = "A" & CStr(Len(First)) & _
CStr(Len(Last))
End Function
使用 SOAP Toolkit 的 WSDL 向导生成 WSDL 和 WSML 文件(WSML 文件中包含 SOAPServer 用于从 Web 服务映射到转载保留:http://www.qqread.com/xml-soap/y231496.html进入讨论组讨论。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- XHTML 代码规范 (530次浏览)
- XML之CSS和XSL精解(1) (314次浏览)
- 利用Digester把XML转换成为Java对象 (143次浏览)
- XML SOAP应用简介 (131次浏览)
- W3C XML Schema 与文档类型定义 (116次浏览)
- XML、DataSet、DataGrid结合写成广告管理程 (109次浏览)
- dotText源码阅读(4)--DTO和数据访问 (108次浏览)
- Publishing Pages with PUT (65次浏览)
- 如何用MSXML2操作XML配置文件 (14次浏览)



