<iframe marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
微软的.NET开发平台已经发布好长时间了,我们现在需要放弃以前编写的组件而转到VB.NET和C#吗?答案是否定的。我们既不需要放弃以前的组件,反而可以加以利用。大多数程序开发人员要从以前的开发环境迁移到VB.NET和C#是需要付出一定的代价的。然而,为了保持现存程序的兼容性,仍然需要使用VB6。值得庆幸的是,微软的SOAP开发工具SimpleObjectAccessProtocol(SOAP)Toolkit给了我们一个既可以利用以前的我们用VB6编写的ActiveXDLL,又可以利用WebServices的给我们带来的好处,它可以让我们的组件作为一种服务通过SOAP在WEB上使用。
SOAP为我们编写分布式的应用程序提供了方便,我们可以利用它以一种平台无关和位置无关的方式来调用组件。SOAP客户端向服务器发送请求信息,要求执行组件的功能,服务器处理发送的请求,执行我们需要的函数,然后把执行结果以响应信息发送到客户端。这些消息都是XML格式的,而且可以以多种协议在客户端和服务器之间进行传输,我们就以最常用的HTTP协议做为例子。
SOAP利用HTTP作为传输机制能够让我们创建的应用程序不但可以是本机的,还可以是局域网的,还可以是因特网的。由于XML是平台无关的,因此我们写的应用程序可以在Windows,Unix,以及手持或无线设备上应用。
现在我们就看看如何把我们的ActiveXDLL通过SOAPToolKit转换成WebServices。调查是因特网上最常见的一项内容,我们就把调查作为一个组件,能够让其它应用和网页使用,调查组件TestServey实现三个函数:RequestSurvey,RespondToSurvey和SurveyResults。
打开VisualBasic6.0,新建一个ActiveXDLL工程,名为TestSurvey,VB6会自动添加一个名为Class1的类,把它更改为Survey,工程属性如下图所示:
然后输入下面的代码:
复制VB.NET代码保存代码
Option Explicit
Public Function RequestSurvey(intSurveyID As Integer) As String
Dim strSurvey As String
strSurvey = "您认为Web Services能够对IT产生革命性的影响吗?"
RequestSurvey = strSurvey
End Function
Public Sub RespondToSurvey(intSurveyID As Integer, blnAgree As Boolean)
End Sub
Public Function DisplaySurveyResults(intSurveyID As Integer) As String
Dim strSurveyResults As String
strSurveyResults = "共有20人投票,16人赞同,4人不赞同。"
DisplaySurveyResults = strSurveyResults
End Function
RequestSurvey函数根据调查的ID号返回调查的问题,RespondToSurvey函数是把调查结果保存到数据库。DisplaySurveyResults函数用来返回调查结果。最后进行编译,生成TestSurvey.dll。
下面,打开SOAPToolKit,如果没有安装,可以到
http://download.microsoft.com/download/xml/Install/3.0/W982KMeXP/EN-US/SoapToolkit30.EXE免费下载。从“开始”菜单里运行“SOAPToolkit'sWebServicesDescriptionLanguage(WSDL)generator”:开始|程序|MicrosoftSoapToolkitVersion3|WSDLgenerator,然后按照向导进行操作。首先出现一个欢迎窗口,如下入所示:
点击“Next”按钮,出现如下的页面:
上图可以允许我们选择一个配置文件,配置文件允许我们能够重新装载或改变我们以前用生成器生成的组件的设置信息,这对为组件添加新的方法或从不同的服务器移除组件时很有用,这里我们什么也不选。点击“Next”按钮,出现下面的窗口,要求输入WebServices的名字和dll文件的位置:
我们输入WebServices的名字为TestSurvey,选择我们编译的TestServey.dll的位置,点击“Next”按钮,出现下面的窗口:
要求我们选择我们要作为WebServices的类和方法,我们把TestSurvey类的方法全部选择。然后点击“Next”按钮,出现下面的窗口,要求我们选择要进行监听的服务器地址和来自SOAP客户端请求的监听方式。
点击“Next”按钮,将会出现下面的窗口,允许你输入WSDL使用的一些URL地址:
点击“Next”按钮,该向导将会允许你输入要新文件存放的路径和配置文件存放的路径,如下所示:
然后点击“Next”按钮,再点“Finish”即可完成。该SOAP生成器自动生成四个文件保存你前面输入的所有的值:TestSurvey.wsdl、TestSurvey.wsml、TestSurveyClient.wsml、TestSurvey.asp和一个配置文件TestSurvey.WGen。
下面,我们需要对向导创建的结果进行测试,其中的TestSurvey.asp文件包含了调用WebServices的方法,TestSurvey.wsdl文件是供局域网之外的壳户端使用的XML定义,一个能够使用SOAP的客户端要使用你的WebServices,就必须能够理解能够使用的方法和参数。TestSurvey.wsdl文件说明了以XML格式使用你的WebServices进行请求和响应的定义。SOAPToolkit3.0生成2个WSML文件,TestSurvey.wsml识别testServey的ProgID,同时也包含了WSDL文件中请求信息和COM接口的映射,TestSurveyClient.wsml包含了任何比较复杂的数据类型映射,如果定义了复杂的数据类型,这个文件才会用得到。
WSDL文件把你的所有方法分解成单独的请求和响应的信息元素,在SOAP中,客户端向WebServices发送请求,其中提供名字属性,包含类名、方法名,这个文件还包含Survey.RequestSurvey请求信息元素,这些信息通过包含DLL中的类名、方法名由SOAP生成器自动生成。当它接收到请求信息时,服务器执行WebServices的功能,并返回响应结果。名字元素基本上和请求信息一致,SOAP生成器自动加上“Response”的后缀,例如:对RequestSurvey方法的响应会对应成Survey.RequestSurveyResponse。
SOAP生成器为每个参数指派为一个XML的part元素,把name属性和我们的DLL函数里的参数匹配起来,生成器还把参数类型翻译成SOAP中同等的数据类型。生成器在创建WSDL文件时只是简单地映射数据类型,如果不能够映射方法中的某些参数时,就会用7个问号“?”来代替。下图就是SOAP数据对象和VB6数据对象的映射关系:
下面,我们创建虚拟目录,以便我们刚才创建的文件能够被InternetInformationServer(IIS)Web服务器使用。打开Internet服务管理器,利用创建向导创建虚拟目录,别名与我们在WDSL里指定的一样,物理目录指向我们保存新文件时指定的目录。虚拟目录创建好了以后,我们就可以对我们的WebServices进行测试了。
复制VB.NET代码保存代码
Option Explicit
Private Sub Form_Load()
Dim soapClient As Object
Set soapClient = CreateObject("MSSOAP.SoapClient30")
Call soapClient.mssoapinit("http://localhost/soaplisten/testsurvey.wsdl","TestSurvey")
lblSurveyQuestion.Caption = soapClient.RequestSurvey(1)
Set soapClient = Nothing
End Sub
当用户点“投票”按钮时,就发结果发送到调查ID=1,并把调查结果返回到客户端。首先创建SOAP Client的实例:
Private Sub cmdSubmit_Click()
Dim soapClient As Object
Dim strSurveyResults As String
Set soapClient = CreateObject("MSSOAP.SoapClient30")
Call SoapClient.mssoapinit("http://localhost/soaplisten/testsurvey.wsdl","TestSurvey")
Call soapClient.RespondToSurvey(1, optAgree.Value)
strSurveyResults = soapClient.DisplaySurveyResults(1)
Call MsgBox(strSurveyResults, vbInformation + vbOKOnly, "Survey Responses")
End Sub
在调查表单里,添加名为lblSurveyQuestion的Label控件,用来显示调查的问题,两个radiobutton,名为optAgree(标题为“同意”)和optDisAgree(标题为“不同意”),一个CommandButton,名为cmdSubmit。在窗体的Load事件里,我们把问题请求回来,然后用提交按钮发送给WebServices,然后返回结果。下面就是测试的结果:
从上面的例子可以看出,访问WebServices是很简单的,在VB中调用WebServices的方法就象我们直接调用MSSOAP.SoapClient30的方法一样,是不是很方便。
分享到:
相关推荐
Web Services 教程Web Services 教程Web Services 教程Web Services 教程
web services web services web services web services web services
Web ServicesWeb ServicesWeb Services
在java开发services中,会用到: 1.webservices-api.jar 2.webservices-extra.jar 3.webservices-rt.jar 4.webservices-tools.jar 5.webservices-extra-api.jar 此压缩文件里就是这五个jar文件。
WEB SERVICES原理与研发实践
Exchange Web Services 2.2
C#和JAVA 通过 webServices 相互通信,通比对比和实例列举出各种情况
逐一详细分析解释包括Web Services的各种核心技术,在分析阐述的同时,使用了大量的应用设计案例和基于Microsoft.NET的开发实例,以使读者能够更形象地理解这些技术与技术的设计思路、设计原则和相应的实现方法。...
·包含RESTful Web services的真实案例,如Amazon的简单存储服务与Atom发布协议等 ·探讨各种流行编程语言的Web services客户端 ·展示如何用三种流行框架实现RESTful services —— Ruby on Rails、Restlet(基于...
java使用xfire实现webServices接口调用(包括实现内部访问以及外部访问的方式)
Oracle Web Services Manager_ Securing your Web Services
简单易懂,学习的好资料,Creating Web Services and hosting them (Using C#).zip,创建和个web服务工程和发布这个工程,Creating Web Services and hosting them (Using C#).zip,创建和个web服务工程和发布这个...
Web Services平台架构,java平台上开发web services
自己封装的一个天气预报Web Services,天气数据由新浪天气预报页面抓取。可以自己修改一下作为一个单独的获取天气预报的Java类。天气数据为xml格式,需要Dom4j支持。
java6实现webservices 超级简单有操作说明易入门: 下载包中有实现的代码和操作说明,对入门webservices新手来说很有帮助,java6自带的新特性来实现的哦。
Web Services资料大全,Web Services Axis CFX Soap 等资料。。。
Java 中,使用axis来实现webServices 里面包含Word详细说明使用webservices的步骤, 看了就会啦, 使用webServicers里面jar ,和工具都包含在里面。。。 如果你要实现webservies的话, 不看后悔死你。。。。
webservices的简单示例,webservices钟的配置
针对目前网络地理信息系统体系结构难以实现Internet环境下的异构空间信息的互操作问题,深入分析其主要原因,在对现有...WebGISVisA体系结构通过Web services对各个地理信息系统组件进行包装,实现各个组件的跨平台操
Flask Building Python Web Services 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除