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.
版权声明:本文标题:VB6中访问Web Service的探讨 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710789628a573223.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论