第16卷 第4期长 春 大 学 学 报V o.l16 N o.4 2006年8月J OU RNAL OF CHANGCHUN UN I VER SI TY A ug.2006
文章编号:1009-3907(2006)04-0052-04
SOAP协议在X ML数据传输中的应用
隋菱歌,殷树友,黄 岚
(长春金融高等专科学校计算机系,吉林长春 130022)
摘 要:随着计算机技术和电子商务的发展,传统的数据交换技术已不能满足企业间大容量数据的交互。XML作为下一代Internet语言,简单易用并且具有极大的灵活性。SOAP协议是基于XML 数据表示的简单对象访问协议,使用它可以在不同的平台和应用程序间方便地交换数据。SOAP 协议在X M L数据传输中必然会得到广泛的应用。
关键词:SOAP协议;X M L;数据传输
中图分类号:TP393.04 文献标识码:B
0 引 言
现代计算机技术和电子商务技术的迅猛发展,对于不同架构下的资源共享和数据通信提出了迫切要求。X M L以其良好的数据存储格式、可扩展性、高度结构化、便于网络传输等特点,使得我们对纷繁复杂的异构数据表达和传输不再束手无策。I B M、M icr osoft等公司制定的基于XML技术的数据传输协议SOAP,具有开放性、与应用无关性、与语言无关性等特点,满足了异构应用程序之间的通信需求,使得模块层能够以一种开放、自说明、统一的方式进行集成和交互,避免了在CORB A、DCOM和其它协议之间转换的麻烦。正是SOAP 的引入,使W eb服务得以满足互操作性、普遍性和低进入屏障,可以用任何语言来编写W eb服务,开发者无需更改他们的开发环境就可生产和使用W eb服务,这极大地促进了W eb服务的发展。
1 S OAP协议及X M L语言的优势
数据通信的基础是进行数据交换的双方要对数据的格式达成统一的认识。传统的数据交换技术基于不同的架构,例如:不同的操作系统NT、Un i x等,不同的数据库系统SQL Server,O rac le等,要想在这些不同的平台、不同的数据库系统之间传输信息非常不方便,这成为阻碍很多项目发展的瓶颈。
X M L(e X tensible M arkup Language)[1]是一种可扩展的元置标语言,采用与平台无关的中性的数据表达,允许数据被序列化成一个可以传递的形式,使其可以容易地在任何平台上被解码。X M L的优势在于:有大量X M L编码和解码软件存在于每个编程环境和平台上;XML基于文本,相当容易用低技术水平的编程环境来处理;XML格式灵活,支持可扩展性,容易用一致的方式来扩展;在XML中每一个元素和属性有一个名域UR I与它相联系;XML还支持带类型的数据表达,XML Sche m a规范为描述X M L数据类型标准化了一个词汇集。所以,采用XML语言统一数据格式是一个必然的发展趋势。
数据格式的统一是数据通信的基础,而数据传输是数据通信的关键。传统的ED I是一种被证明了的适用于商务公司间交换信息的解决方式。然而,EDI非常严格,而且非常复杂。因此,对一个公司来说,实现、维护和配置ED I是非常昂贵的。分布式组件对象模型(DCOM)允许驻留在不同的计算机上,并且基于C OM
收稿日期:2006-05-10
基金项目:吉林省科技发展计划项目(20050106);吉林省教育厅科研计划项目(JJ KHZ2005-101)
作者简介:隋菱歌(1975-),女,吉林省农安县人,长春金融高等专科学校计算机系讲师,硕士,主要从事计算机网络及数字图像处理的研究。
的应用程序彼此之间能够通信。Internet I nter-ORB 协议(II O P)、对象请求代理(ORB )和公共对象请求代理结构(C ORBA ),对基于U nix 的应用程序实现了DCO M 同样的功能。但现有的技术是平台相关的,要基于DCO M 建立系统,通信的对方也必须采用DCOM,并且DCOM 和CORBA 都要求在防火墙上开放特定端口供双方消息的交互,这大大制约了其在I nternet 上的应用。
SOAP(S i m ple ObjectA ccess Protoco l)技术有助于实现大量异构程序和平台之间的互操作,从而使存在的应用能够被广泛的用户所访问。SOAP 是把成熟的基于HTTP 的W EB 技术与XM L 的灵活性和可扩展性组合在了一起。HTTP 就像W eb 浏览器一样,已广泛应用在各种计算机平台和设备上。SOAP 可以建立在HTTP 协议上,可以作为HTTP 请求或响应的一部分传递,如图1所示。任何允许HTTP 通信的网络都可以通过SOAP 消息。所以,建立在HTTP 之上的SOAP 也将可以适用于各种各样的计算机平台和设备。
图1 SOPA 协议可以基于HTT P 协议在防火墙和代理间通信
SOAP 可以简单理解为这样一个开放协议:SOAP =
RPC +HTTP+XM L 。采用HTTP 作为底层通讯协议,RPC
(远程过程调用)作为一致性的调用途径,XML 作为数据传
送的格式,允许服务提供者和服务客户经过防火墙在I nter -
net 上进行通讯交互。
需要指出的是SOAP 不会取代CORBA 、C OM /DCOM,三者的概念有所区别。CO M /DCOM 是个组件模型标准,CORBA 是分布式应用的服务标准。CORBA 和DCO M 为分布式应用程序建立服务,服务对象来执行客户端调用的服务,而SOAP 是基于X M L 和HTTP 的分布式对象的通信协议,是C OM /DCOM 和CORBA 对象进行通讯的协议。实际上,利用SOAP 的互操作性和CORB A 强大的执行能力,两者可以很好地结合在一起。
2 S OAP 协议分析
SOAP 是在非集中、分布式环境中进行信息交换采用的一个轻量级、可扩展的和基于XM L 的协议。首先,SOAP 定义了一个消息结构框架和一个消息处理模型。SOAP 还定义了一组序列化数据的编码规则和一个进行远程过程调用的约定。SOAP 扩展性模型为在多种基础协议(如HTTP)上运行的广泛可组合协议提供了基础。
图2 SOA P 封装结构
一个SOAP 消息是一个普通的XML 文档,该文档包含如下的元素[2]:
(1)SOAP 封装结构(SOAP Envelop):是SOAP 消息的信息框架,用来表示
消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的,
它定义了一个以SOAP H eader 、SOAP Body 为子主体的描述结构。SOAP H eader
提供了一个可伸缩的机制用于在分散的模块中扩展SOAP 消息,而通讯双方并
不需要有预先的约定知识。SOAP Body 元素提供一个简单的用于与消息的最
终接收者交换必须处理的信息的机制。在SOAP Body 中可以描述应用入口调
用和响应的各种数据信息。如图2所示,H eader 和Body 容器中可以有多个应
用程序定义块。
(2)SOAP 编码规则(SOAP Encod i n g Ru les):为了交换数据,计算机必须在
编码特定数据类型的规则上达成一致,SOAP 也有自己的一套编码数据类型的
约定。大部分约定都基于W 3C XML Sche m a 规范。
(3)SOAP RPC 表示(SOAP RPC Represen tation):定义了一个用来表示远程过程调用(RPC)和应答的协定,利用XML 的可扩展性和可伸缩性来包装和交换RPC 调用。
(4)SOAP 绑定(SOAP B inding):提供了一套利用更底层协议传输SOAP 消息的通用机制。通过绑定各种已有的I n ter net 协议,譬如HTTP 、S MTP 、P OP3等,利用这些协议的调用响应机制,完成SOAP 的调用和响应。具体地说,SOAP 消息会作为这些协议的正文被发送。
虽然这四个部分都作为SOAP 的一部分一起描述,但它们在功能上是相交的。特别的,封装和编码规则是在不同的名域中定义的,这样有利于通过模块化获得定义和实现的简明性。53第4期 隋菱歌,等:SOAP 协议在XM L 数据传输中的应用