从soap toolkit移植到web 服务
升级到微软 .net
peter vogel
ph&v信息服务公司
2002年1月
概述: 本文讨论如如何从microsoft visual basic 6.0 和 visual basic .net中访问web服务,如何将现有soap应用程序转换到微软.net平台。
目标
学习microsoft® visual studio® .net中的soap工具
回顾利用soap 和 microsoft visual basic® 6.0访问com/com+组件
从microsoft visual basic .net中访问web服务
将soap工具包应用程序移植到web服务
要求
为了充分利用本文,读者必须具备以下基础:
理解何为web服务
使用过visual basic 6.0 及 soap,知道如何创建microsoft activex® dll工程
熟悉visual studio .net基本知识
目录
web服务、soap及你自己的工具
web 服务描述工具
soap toolkit 2.0 简介
visual basic .net纵观
创建客户端
从 soap toolkit 转换到visual studio .net
小结
web 服务 soap及用户自己的工具
web服务提供了函数,通过互联网可以访问这些函数——调用web服务,然后得到返回结果。web服务中的新内容是通过全球最大的网络——internet可以链接到这些服务。然而,作为visual basic程序员web服务将为你处理所有利用互联网的烦琐细节。
本文将讨论如何利用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文档:
1. 通过串联字符串来装配文档
2. 利用soap toolkit 2.0版中的soapclient
soapclient不仅能创建与web服务通讯的soap文档,还能将文档发送到web服务进行处理。
在传递中的web服务端,需要利用soap接收器捕获并处理由客户端发送的文档。soap toolkit 2.0版中包含了soapserver,利用此程序接收器应用程序就能处理soap文档。接收器是一个独立的应用程序,它独立于实现了web服务的组件。
利用visual studio .net,创建和访问web服务就变得简单了。在visual studio .net中,创建web服务并不需要构建独立的接收器应用程序。当访问web服务时,代码将自动创建,这样使用web服务就象访问其它对象一样。
web 服务描述工具
web服务描述语言(wsdl)是专门为描述web服务而设计的xml语言。wsdl已经同soap一同提交给了w3c,这只是使web服务成为开放标准的一部分。服务的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>