admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:什么是数据源)

维普资讯

科技信息 0计算机与信息拉术0 SCIENCE INFORMATION 2006年第6期 

VB6中访问Web Service.的探讨 

关颖,费雅洁’李晓辉 

(1、沈阳工程学院信息工程系辽宁 沈阳1 10136;2、承德石油高等专科学校计算机与信息工程系河北承德067000) 

摘要:基于SOA框架原理,讨论在VB6中如何对发布的服务进行访问,进而给出一种快速实现VB6开发的系统扩展的模式。 

关键词:SOA框架;XmlHttp协议;COM组件;Web Service;Soap 

the Discussion of Visiing tWeb Service in VB6 

GUAN Ying1.FEI Ya・jiel,LI Xlao-hui2 

(1.Department of Information Engineering Shenyang Institute of Engineering,Shenyang Llaoning,110136;2・Department of Computer 

and Information Engin ̄ring Chengde Petroleum College,Chengde Hebei,067000) 

Abstract:On the basis 0f SOA framework principles off how to visit services released in VB6,thus providing a rapid expansion of the system to 

achieve VB6 development mode1. 

Keywords:SOA framework;XmlHttp Protocol;COM Components;Web Service;Soap 

public string name; 

1.引言 

public bool sex; 

随着技术的不断更新进步,软件业也在发生着翻天覆地的变化。 

几年前异构系统的交互还是个很高深的话题,但在今天它却已经向人 

public stirng[】family; 

们展开了双臂.基于SOA框架的系统升级方案在不断地为企业应用 

} 

下面以不同的方式来实现对该服务的访问: 

系统提供扩展功能。SOA框架中的核心基础就是Web Service技术的 

应用.Web Service使得系统交互成为非常方便的事情。 3_2_l利用XmlHttp来访问Web Service 

2.问题提出 

安装不同版本的MSXML SDK就可以得到不同版本的XML操作 

当前.使用VB6等工具开发出来的信息系统仍然占据荐很大的 对象,以MSXML 3.0为基础.使用XmlHttp访问上面服务的示例代码 

 

比例.出f系统运营的稳定性、企业IT投资预算等等原 的考虑,多 

如下:

Dim xmlhttp As New MSXML2.XMLHTTP30 

数企业、公司还是选择了在原有系统的基础上进行升级扩展,而Web 

Service以其种种优势.逐渐成为这个舞台中的主角。因此,我们将讨论 

如何使用VB6来完成对Web Service的访问并进行快速开发以应对 

系统不断扩展的需求。 

3.技术讨论 

3.1概念介绍 

SOA框架SOA全名Service—Oriented Architecture,即丽向服务 

的架构.是指为了解决在网络环境下(InterneffIntranet)业务集成的需 

要.通过连接能完成特定任务的独立功能实体的一种软件系统架构。 

它的丰要特征在于功能实现的独立性,大数据量的低频率访问和基于 

文本消息的传递(町以穿透防火墙)。它能够解决异构系统间的互访 

问,系统版本的升级等各类问题。Web Service标准的成熟和应用的普 

及为广泛实现SOA架构提供了基础。 

MS Soap Toolkit MS Soap Toolkit是微软的一个资源开发工具 

包,它可以将系统巾已经存在的COM对象以Web Service的方式发布 

出来,延仲了原有系统的交互能力;同时它也提供了对服务的访问,有 

两种方式:高层接口和底层接口。由于Soap本身是对象访问的协议。 

它不提供基于对象方法的调用说明。如果在高层接口中希望通过 

COM对象的方式来传递参数,则需要使用WSML。本文将要讨论的则 

是基于底层接口的访问方法。 

XmlHttp协议xmlHttp是~种协议,它提供了客户端同http服 

务器的通讯。Ui客户端使用XmlHttp对象(包含在MSXML SDK中)向 

Web服务器发送请求.并使用微软XML文档对象模型DOM处理 

XmlHttp返回的消息。当前。绝大多数浏览器都支持XmlHttp,在IE中 

通过使用ActiveXObject方式创建XmlHttp对象,而在其他浏览器 

(Firefox、Opera等)中则通过XmlHttpRequest来创建XmlHttp对象。另 

外,在目前非常流行的ijax技术中.XmlHttp是一项不可或缺的技术。 

3.2案例实现 以下介绍的内容是在实际应用的基础上总结出来 

的几种基于VB6调用Web Service的实用方法,这些方法已经在不同 

的系统中得以应用。本文假定调用服务器端发布的服务中所包含的 

GetPerson方法来进行示例.其中涉及了自定义对象的调用、数组的传 

递,极具代表性。该方法的执行代码如下: 

public stirng GetPerson(Person P) 

{ 

string temp=string.Empty; 

temp+ p.name+“\r、ln”; 

Dim xmldoc As New MSXML2.DOMDocument30 

Dim env As Sting r

env=”<?xml version=””1.0””encoding=…’utf-8””?>”&

”<80ap:Envel0pe xmlns:xsi=…。http://www.w3.org/200I/XMLSehema— 

instance””xmlns:xsd=””http://www.w3.org/200I/XMLSchema””xmlns: 

soap=””http://schemas.xmlsoap.orS/soap/envelope/…’>”&

一 

一 

”<p><name>string</name><sex>true</scx>”&

”<family><sting>stfring</string><string>sting</string>”&r

”</fmialy><,D><,GetPerson><,soap:Bodv><,s0ap:Envel0pe>” 

xmlhttp.open”POST”。”http://loealhost/SayHello/MyService.aflnx”. 

False 

一 

一 

”<soap:Body><GetPerson xlnln8- ̄””http://tempuri.or/S””>”&一 

xmlhttp.setRequestHeader”Content—Tvpe”,”text/xml;charsct=utf-8” 

xmlhttp.setRequestHeader”HOST”.”localhost” 

xmlhttp.setRequestHeader”Content—Len ̄h”.Len(env1 

xmlhttp.setRequestHeader ”SOAPAction”. ”http://tempuri.or/S 

GetPerson” 

xmlhttp.send env 

If xmlhttp.readyState=4 And xmlhttp.Status=200 Then 

xmldoc.1oadXML xmlhttp.responseText 

MsgBox xmld0c.d0cumentElement.seleetNodes(”//GetPersonResult”) 

(o).Text 

EndIf 

使用XmlHttp来访问Web Service时,需要注意对访问字符申的 

组织。在商业应用程序中发布的服务,往往是基于对象级别的参数,即 

服务本身只使用自定义对象作为参数。对象中则包含了很多的属性, 

这时。如果使用手工组织.不但不利于开发l工作的快速进行,而且也大 

大增加了错误出现的几率。一个可取的解决方法是参照WSDL标准制 

作一个代码自动生成工具.通过解析服务的WSDL定义来生成访问服 

务所需要的代码.如此即使服务发生了变更,只需要重新运行一遍,即 

可得到最新的代码访问类,但前提是需要了解WSDL的相关规范。 

3.2.2利用MS Soap Toolkit访问Web Service 

利用高层接1:3开发,客户端不需要了解SOAP和xML的信息即 

可访问Web Service。Soap Toolkit通过COM对象SoapClient来访问服 

务,客户端只需要生成,个SoapClient实例。以服务的路径作为参数 

来调用其中的mssoapinit方法.这样SoapClient对象会自动解析接收 

temp+ p-sex.ToString0+“\I ”: 

到的WSDL格式内容.并在内部生成所有Web Service的方法和参数 

foreaeh(string a in p.family) 

信息.此后可直接调用SoapClient对象里面所有的方法。 

{ 

temp+=a+“\r ”: 

利用低层接1:3,则必须对SOAP和XML有所了解。这可以对 

SOAP的处理过程进行控制,特别是要做特殊处理的时候。在客户端, 

J 

首先要创建一个HttpConnector对象来负责HTrP的连接,需要在该对 

return tcmp; 

象上设定一些头部信息,如SoapAction等。如果网络连接需要使用代 

l 

理服务器.那么也需要在该对象上设定相关的信息。接着创建 

方法的功能是取得Person这个对象的所有内容并组织成字符串 

SoapSerializer对象,用于生成SOAP消息.按照WSDL定义,把所有参 

返回 对象Person的定义如下: 

数按顺序序列化.得到一个完整的SOAP请求消息,该SOAP消息作 

public class Person 

为Payload通过HttpConnector被发送到服务端。最后,(下转第25页) 

{ 

维普资讯

r ̄tg!llt 0计算机与信息技术0 SCIENCE INFORMATION 2006年第6期 

(上接第27页)生成一个SoapReader对象,负责读取服务端返回的 

SOAP消息,取得其中的返回值。示例代码如下: ’ 

ifles instead 0f having to go throush a central server.3、P2P是一种分布 

Dim Connector As New HttpConnector30 

式网络.网络的参与者共享他们所拥有的一部分硬件资源(处理能力、 

Dim Seriliazer As New SoapSerializer30 

存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供 

Dim Reader As New SoapReader30 

服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体。 Connector.Property(”EndPointURL”)=”http:#lcaolhost/SayHello/ 

MyService.samx?wsdl” 

在此网络巾的参与者既是资源(服务和内容)提供者(Server),又是资 

Connector.Connect 

源(服务和内容)获取者(Client)。 

Connector.Property(”SoapAction”1=”http://tempuri or/sGetPerson” 

在P2P系统中,每一个Peer都是平等的参与者,承担服务使用者 

Serializer.Init Conn ̄tor.InputSteam r

和服务提供者两个角色。资源的所有权和控制权被分散到网络的每一 

Connector.BeginMessage 

个节点中..服务使用者和服务提供者之间_进行直接通信,可充分利用 

Serializer.startEnvclope 

Serializer.startBody 

网络带宽。减少网络的拥塞状况。使得资源的有效利用率大大提岛(包 

Serializer.WriteXml”<GetPerson xmlns=…’http://tempuri.orS/ >< 

括各种计算资源和存储资源)。同时由于没有中央节点的集中控制,系 

P><name>sting</name><srex>true</sex><family><sting>strring(/ 

统的伸缩性较强。也能避免单点故障,提高系统的容错性能 但由于 

string><string>string</string></family></p></GetPerson>” 

P2P网络的分散性、自治性、动态性等特点,造成了某些情况下Peer 

Seriliazer.endBody 

的访问结果是不可预见的。例如,一个请求可能得不到任何应答消息 

Sefializer endEnvelope 

P2P networks work by connecting individual computers together to share 

的反馈。 

Connector.EndMessage 

3.5 P2P与C/S结构的比较P2P模式是非中心结构的对等模 

MsgBox Reader RpcResuh.Text 

式.P2P与C/S模式的区别为:传统的C/S模式中服务器居于核心地 

利用MS SOAP%olkit,还可以将系统的业务逻辑对象发布成为 

位.服务器是整个网络的意义所在,无论信息资源还是成本资源均向 

Service服务,为其他的异构系统提供服务,扩展原有系统的交互能 

同一方向集中,因此服务器的性能显得至关重要。这样的模式符合一 

力。 

3 2.3利用.NET生成的COM组件访问Web Service 

对多、强对弱的社会关系形式。P2P方式将使信息数量、成本资源都向 

NET是微软的新一代平台理念.涵盖范围非常广泛。这里我们需 

互联网各点均匀分布,也就是所谓“边缘化”的趋势。此模式符合“一对 

Reader Load Connector.OutputStream 

”的特点。P2P技术与C/S技术性能比较如下面的表l 

袅1 c/S技术与P2P技术性能比较 

要使用的是Microsoft.Net Framework 1.1。从微软网站下载setup程序 

后直接安装。在C:\WINDOWS\Miemsftn NETWmmework\v1.1_4322有 

两个控制台程序我们需要使用:wsd1.exe和regasm.exe。wsd1.exe可以 

性能 数据 数据 数据 数据 数据 数据 数据 覆盖 成本 管理 

分析 发布 接收 互动 即时 安全 更新 质量 率数 控制 方便 

性 性 性 据 性 

P2P 好 

C/S 差 

lh 

好 

好 

羞 

好 

差 

差 

好 

好 

差 

由 

好 

差 

好 

好 

差 

差 

好 

根据发布的Web服务的路径来自动生成可以访问服务的代理类, 

mgasm.exe可以将生成的.Net代理类注册成为COM类。这样VB6可 

以借助于.NET组件来访问Web服务了。基本上不需要编写访问代 

码。示例代码如下: 

命令行脚本 

Wsd1.exc http:/ ̄ocalhost/SayHello/MyService.slanx 

Regasm.exe lcaolpath\MyService.dll/codebase lcaolpath\MyServiee 

dll/tlb 

通过以 概述,我们可以基本了解设计和实现一个即时通信工具 

所需用的到的知识和技术。在技术方面,我们可以采用以下架构:该系 

统是基于TCP,IP协议的.在用户与服务器之间采用C/S结构,而各个 

用户之间采用的是P2P技术进行通信。底层通讯利用UDP数据报协 

VB6程序代码 

Dim ms As New MyService.MyServiee 

Dim P As New MyService.Person 

议进行通讯。这样。便于客户端之间的直接通讯,也可以高效的传送消 

Dim a(2)As Stirng 

a(o) ”stirng” 

1)=”stirng” 

p.Name=’’string’’ 

p.sex=Tme 

p.fmialy a 

参考文献 

MsgBox ms.GetPerson(p) 

[1]刘骏、颜钢锋,“基于Socket的网络编程技术及其实现(Network 

以上我们讨论三种访问Web Service的方式,这三种方式都可以 

Programming Technique and Its Realization Based on Socket)”[J],《江南 

实现对服务器端服务的访问。 

大学学报》,2004年6月. 

4.总结 

从以上的示例中.我们不难看出实际以第三种访问方式最为快捷 

方便,通过.NET Framework自带的工具,可以轻易地实现服务访问的 

[J],《计算机时代》,2004年第7期. 

类库.进而将.NET组件注册成为COM组件,剩下来所需要做的也仅 

[3]杨大全、拱长青,“Socket编程技术”[J],《沈阳工业大学学报》,2000 

仅就是编写调用的代码了。即使服务发生了变更。系统也能够及时对 

年8月. 

应,代码的准确性也能得到保障。而且在调用大量复杂Web服务的场 

[4]李胜后、钟蕾,“TCPaP协议及其安全性分析(TCP/IP Protocol and 

景下,更能缩短开发周期。还有一点就是为以后的系统升级奠定了基 

Its Safety Analysis)”【J],《信息技术Information Technology),2005年第 

础。当然,实际项目开发工作屯存在很多其他的制约因索,这就需要 

根据具体情况来分析应用了。 

4期. 

1_ 

[2]程咏喜、蒋珉,“基于TCP/IP协议的WinSock网络编程及应用” 

[5¨美]W.Richard Stevens,{TCP/IP详解卷h协议》[M].机械工业出 

参考资料 

版社.2002年1月. 

[1][美]Kenn Scribner等著,刘勇等译.应用SOAP实现.NET XML 

[6¨美]Gary R.Wright/W.Richard Stevens.(TCP/IP详解卷2:实现》 

Web服务.北京:人民邮电出版社.2002,6. 

[M],机械工业出版社。2002年3月. 

[2]Jmeas Snell。Doug Tidwell,Pavel Kulchenko著,胡军译.SOAP Web 

服务开发.北京:中国电力出版社.2002,9. 

日. 

怀特.周生炳等.XML从入门到精通(黄金版).北京:电子工业出 

[7]张聚礼、余冬梅、张秋余,“基于C/S的软件体系结构研究(Research 

[3]美.

on C/S based Software Architecture)”[J],《计算机工程与应用》.2003 

[4]康博译.Visual Basic互操作高级编程——从COM和VB6升级到. 

年8月. 

NET.北京:清华大学出版社.2o02,8. 

[8]单国栋,戴英侠.王航,“P2P网络系统中的安全问题”[J],《通信技 

作者简介:关颗(1978一),士,锡伯族,辽宁省抚顺市人,助教.硕士 

术》,No.5 2002年. 

研究生,研究方向计算机应用技术。 

[8]郭丽、扬振启.“P2P技术原理及安全性问题浅析”[J],《网络安全技 

费雅洁(1968一),女.天津人.副教授,硕士研究生。研究方向数据 

术与应用》.2005年6月. 

库技术。 

[1O]高延武,“P2P技术与应用”[J].《邢台学院学报》,2004年6月. 

李晓g(1978一).士,辽宁省辽中县人。助教。硕士研究生.研究方 

向网络应用 

版社.2002.1. 


本文标签: 服务 系统 访问 对象 需要