资源描述
毕业设计(论文) 第38页
毕业设计(论文)
设计(论文)题目 基于XML技术的综合娱乐系统
数据同步模块开发
学生姓名
专业班级
指导老师
系主任(院长)
评 阅 人
5月23日
基于XML技术的综合娱乐系统数据同步模块开发
摘 要
随着企业的不断发展和壮大, 企业的总部与分公司处于不同地区的情况越来越多,为了使企业内部使用相同的数据, 大多数企业都采用了数据库提供的同步技术来解决这一问题, 但该方法操作难度较大, 而数据库提供的同步技术也会因网络、电力等原因造成数据同步无法进行, 引起数据的丢失等。为了简化操作难度, 本文编写了一段程序来解决数据库之间的同步问题,不论数据库是否提供同步技术都可实现数据库同步。
文章分析了常见的同步策略和目前的数据同步解决方案,阐述了XML、Web在程序开发、数据传输等方面的技术优势。通过对数据同步目标、数据的传输方式和传输格式等关键问题的分析,提出了一种采用C/S模式,基于XML技术和Web服务开发的系统同步模块的实现方案,建立了相应的平台模型和系统框架,并采用基于.NET平台的开发工具实现了该模型,包括客户端变化数据的提取、数据发送、数据接收等功能,完成了系统数据同步的目标。
关键词:数据同步;XML;Web服务
The Performance of Data Synchronization Module of the Composite Entertainment System Constructed On the XML Technology
ABSTRACT
With the development of the enterprises, it is becoming common that an increasing number of the enterprises have their branches separated from the places of the headquarters. Most enterprises adopt the synchronous technology offered by the databases to solve this problem so that the same data can be used in different places synchronously. However, the synchronization offered by the databases cannot work well and even lose the data because of the problem of the network and electricity. To decrease the difficulty of operation, the author intended to write a set of programs to offer the method to solve the problem of synchronization between different databases even if the synchronous technology is not offered by the databases.
The article analyses the hackneyed synchronization strategy and the solution of data synchronization at present. Secondly, it introduces XML、Web and analyses the technology advantages in programming、data transmission and so on. Finally, it proposes a data synchronization platform model which adopts the C/S model and is based on XML technology and Web Service and establishes the model and the frame of the platform by analysis of the goal of the data synchronization and the problems of data transmission mean and form. The model was developed by tools based on .NET, and it has the function of distilling changed data, sending data and receiving data realizing the data synchronization of the system.
Key words: data synchronization; XML; Web Service
目录
1绪论 1
1.1本课题的目的 1
1.2本课题的来源 1
2数据同步技术简介 2
2.1数据同步在企业中的发展现状和作用 2
2.2数据同步的方式和类型 3
2.3几种常见的数据同步方法 4
2.4冲突控制 7
2.5数据同步技术目前存在的问题 7
3技术背景 8
3.1XML技术 8
3.1.1XML概况 8
3.1.2数据同步中的XML应用 9
3.2WEB服务 11
3.2.1WEB服务的概况 11
3.2.2WEB服务的基本标准和协议 11
3.3 C/S模式 16
4基于XML技术的综合娱乐系统数据同步模块开发 18
4.1基于ORACLE高级复制技术的实现方案 18
4.2基于程序实现的同步方案 26
4.2.1系统结构 26
4.2.2系统设计描述 30
5工作总结和展望 36
致谢 37
参考文献 38
1绪论
1.1本课题的目的
随着经济的高速发展和互连网的广泛应用,我们也逐步的进入了信息社会,而信息社会的生存能力很大程度上取决于获取信息和处理信息的能力,对于企业而言更是如此。企业只有具备及时获取信息,把握动态,解决问题的能力,才能抓住机遇来创造社会价值,获取利润。因此信息一致性显得对现代企业越发的重要。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的主流公共语言。本课题将利用XML和Web Service技术实现各地分公司与集团总公司之间的数据同步,并能按照自定义制定的冲突解决各分公司之间会员信息的冲突
1.2本课题的来源
随着信息化的快速发展,一些企业已经利用信息化的手段改善了经营和管理上的一些弊病,但由于掌握信息资源的不平等性使得企业各部门之间仍然无法满足实时信息共享。网络的迅猛发展,使得对分散型企业进行管理成为了可能,采用先进的信息化管理工具可以对经营数据和商业信息进行同步,使得企业总部和分公司之间和以最快速度达到资源和信息共享,于是可以更好的通过改变经营策略来获得更高的经济效益。
Web服务的优势在于,应用程序可以通过简单对象访问协议(SOAP)来访问它,基于HTTP协议以XML的形式来进行传输。不必对服务进行特别的编程,除了使它能够使用SOAP接收请求和传输结果之外。所以,在许多情况下,企业可以很直观地构建Web服务,甚至可以改编现有的软件来创建新的Web服务。而传统的Web方法则需要对系统进行完整的设计,如果要新加一个功能就需要对原有程序进行大的改动,这样对于分布式的餐饮管理而言代价无疑是巨大的,而采用Web服务就可以免去这些麻烦,
我们只需要调用Web服务所公布的方法,对程序进行小的改动就可以完成。基于Web服务技术的优势,采取基于Web服务技术来进行开发。
C/S模式是已经非常成熟的一种设计模式,基于C/S进行开发,可以保证系统的稳定性以及高效性。
2数据同步技术简介
2.1数据同步在企业中的发展现状和作用
21世纪是信息的世纪,信息获取的准确性和及时性直接关系到企业的生存和发展。传统的依靠电话和邮件等方式来获取信息的方式已经越来越不能满足企业日益壮大的业务规模的需要,以信息为基础的企业管理理念已经逐渐的被建立起来了。先进的企业运营模式,极大的提高了企业的生产效率,拓宽了企业的销售市场,打破了以往的地域限制。企业信息管理系统[19]随着企业的全球化发展也呈现出分布式的特点,因此分布式数据库管理和数据同步是实现企业分布式信息管理的关键。
数据同步是一种新兴的技术,它通过对处于分布式数据库系统中各个站点上的数据进行同步来达到对数据分散存放的目的,这种存放可以使用户透明的处理和使用数据,大大增加了站点的自治性,且这些副本大大减少了由于自然或其它原因导致的数据丢失等重大故障。
全球性的或全国性的大集团、大公司、大企业,如:银行业、保险业、连锁店、交通运输业,甚至是政府机关、国防军事、教育业等都相继使用了分布式数据库的管理方式或提出了需要用分布式数据库进行管理的需求,因为在这些组织中往往需要各部门或分枝局部控制和分散管理,同时也要有整个组织的全局控制和高层机构的协同管理,因此使用分布数据库进行数据管理是极有市场前景的。在使用分布式数据库管理过程中数据同步是不可缺少的一个重要组成部分,因为各个部门的数据要让上级部门获得以便于对整个组织的人事管理和运营效益等诸多方面有一个总体的了解,也便于对前期工作做出总结,同时做出下一阶段的计划;同时各个部门也可能需要获得上级部门的数据,来得知某些基本数据的变化,这些数据的及时传送能够大大的提高企事业单位的竞争力。
2.2数据同步的方式和类型
数据同步方式
1. 紧凑方式
紧凑方式要求源数据更新和副本同步同时进行,即副本数据在任何时刻都应与源数据保持一致。采用两阶段提交的技术可以实现这种方式的应用。考虑到目前远程传输速率、响应时间等各种网络因素的影响,紧凑方式在局域网环境下适用性好。
2. 松散方式
松散方式允许源数据更新和副本同步可异步执行,两者之间存在时间延迟。
对于数据分布在不同区域的情况下,通常要考虑一个站点上的数据操作对其它站点上数据的影响,这称为站点的自治性。如果一个节点在与其它节点断接的情况下,仍能够继续工作而不受影响,则称这个节点是完全自治的。很显然,由于立即事务一致性采取的是两阶段提交协议必然会降低节点的自治性,因为两阶段提交的事务要求一个节点的更新必须立即传播到其它的节点,而当某个节点不能连接上和出现故障时,事务无法成功提交,导致所有的节点都无法继续工作。因此,立即事务一致性要求所有节点之间时刻保持连接,而且每个节点也必须时刻保持能正常工作,这对于不能保证网络环境时刻稳定的分布式系统并不适用。
数据同步的类型:
按照数据流在各个站点中的流动方向,可以将数据同步分为三类[16]:单向同步;准双向同步;双向同步。
单向同步就是数据在两个站点间的单向流动的,如图2-1所示:
数据库A
数据库B
图 2-1 单向同步
数据总是从站点A向站点B流动,这就表明站点A中的数据在站点B中有分布,并且站点B仅对数据进行查询和统计操作,而不对数据进行插入,修改和删除的操作,也就是说站点A中的数据域是主数据域,站点B中的数据域是从数据域,由于只有站点A对数据的操作会引起数据的变化,因而不会引起数据冲突,也就不需要数据冲突解决策略,数据同步的过程只是从站点A将变化的数据同步到站点B即可。这是一种最简单的数据同步。
准双向数据同步中数据在两个站点间流动,如图2-2所示:
数据库A
数据库B
图 2-2 准双向同步
既有从站点A流向站点B的数据也有从站点B流向站点A的数据,但是两个方向的数据流是无关的,实际上相当于两个单向的数据流。
双向数据同步[6]与准双向数据同步相同,数据也是双向流动的,如图2-2所示,不同的是有一部分的数据是站点A和站点B共享的,站点A和站点B均可以对此共享数据进行操作,这样就可能会出现数据冲突,因此需要有冲突解决策略。
2.3几种常见的数据同步方法
20世纪90年代开始,诸多学者对数据同步进行了大量的研究,总结出了数据同步的几种常用的方法[16]:
手工方法 :专业人员根据数据的划分策略将数据分布到不同的站点,定期的收集各处的数据更新情况,经同步处理后人工将处理结果分发到各个相关的站点,从而达到数据同步的目的。这种方法是最原始的,它对工作人员的专业水平的要求很高,并且在站点较多,而且数据相对较为复杂的情况下进行手工数据同步几乎是不可能的事情。
基于电子邮件的同步方式:指用邮件服务器(MailServer)作为数据同步的中间传输工具,各站点收集各自的数据变化,并将这些数据变化以邮件的形式发送到MailServer,MailServer收到邮件后,经处理将最终同步结果以邮件的方式传送到各个相关的站点,来保持数据的同步。由于电子邮件的发送和接收是不可靠的,即存在邮件丢失和邮件的发送和接收顺序不一致的情况,使数据同步变得更为复杂。
基于FTP的数据同步方式:指设置一个FTP服务器(FTPServer),各站点将各自的数据变化以文件的方式传到FTP的相应目录下,FTPServer监视各目录下文件的变化及时合并数据然后将同步的结果以文件的方式保存在固定的分发目录下,由各个站点下载最新的同步数据包到本地,更新本地的数据。由于FTP的上传和下载是人为可控的,即传输过程是确定的,所以不会出现数据丢失和乱序的情况。但是这种曰下的目录扫描、组织和管理是相当复杂的,并且存在传输过程和同步过程脱节的情况,同时也存在FIT服务器的容量限制问题。
采用数据库复制:采用数据库复制概念,并将这种功能以套件的形式直接嵌入数据库系统中提供分布数据环境下的数据同步方法,有些数据库系统还提供API给开发者,以开发出符合实际情况的应用,但是大多数的数据库开发商提供的是基于表对表的数据同步复制忽略表和表之间的约束关系,并且大多数复制方法也都是立即更新方式,对于处理断接情况的数据同步有一定的不足。
随着对数据一致性要求的不断提高以及应用特殊性,分布式数据库的数据复制功能也越来越完善,目前主流的大型数据库管理系统产品,如Oracle、IBM DB2、Sybase和MS SQL Server等都在原有的数据复制功能上添置了更多的组件,提供了许多数据复制工具,针对不同的应用提出并研究了各种数据同步方法。下面将详细介绍下Oracle高级复制技术的实现机制:
Oracle高级复制[18]即可支持基于整表复制也可支持部分表的复制两种方案。这两种复制方案主要是通过Oracle的两种复制机制来完成的,即多主复制和可更新快照复制,同时还可将这两种复制机制结合起来以满足不断变化的业务需求。
1. 多主复制:
多主复制支持全表在各个主节点间的对称复制,允许所有主节点对主表都有更新操作的权限。任何一个主节点上复制表的更新都会被传播并被直接应用到其他所有主表。一个主节点出现问题,不会对其他主节点之间变化的传播造成影响。多主复制采用一种称为“延迟远程过程调用(deferredr emotep rocedurecalls RPCs)”的机制作为主要的传播和应用变化的机制。各节点之间变化的传播,既可以基于事件的方式立即传播,也可以在某个特定的时间点传播。在传播变化时,如果其中的一个远端系统未准备好,传播变化的延迟远程过程调用(RPCs)就会保存在其本地队列中,等到系统准备好以后再执行。
2. 可更新快照:
Oracle 将最早的只读快照机制扩展为一种允许快照可更新的对称复制机制。快照更新的传播方式和如何应用到快照主节点采用了和多宿主复制一样的延迟远程过程调用机制。对于快照的定义,既可以是包含一个主表的完全拷贝,也可以是为满足基于值的选择标准的主表中行的子集。快照在主节点的刷新是按照一定的时间间隔或用户单独请求进行的。最后一次刷新后主表的任何变化也同样被传播并应用到快照。多个快照的刷新是在一个一致的事务中完成的,这就确保了数据和引用的完整性。
3. 混合复制:
可以将多主复制和可更新快照复制结合在一起,构成一种新的混合复制,这种复制可以完成对全表或者子表的复制。例如下面这种应用就是一个典型的混合复制方案,一个系统具有两个位于不同地理区域的中心节点,这两个不同的地理区域下面还有一些分支机构,两个中心节点可以彼此看作是自己的备份节点。采用多主复制方法在两个中心站点之间复制数据,同时采用只读或者可更新快照复制方法在每个区域范围中的主节点之间复制全表或者子表。这种复制的一个显著好处就是当其中的一个中心节点发生问题时,这些快照的主节点可以被重新定义到另一个运行良好的中心节点,从而提高了系统的可靠性。
Oracle除了前面讨论的三种复制机制以外,还提供了另外两种复制机制[8]:过程级复制和同步复制。过程级复制主要应用在存在大量数据更新以及采取批处理方式 操作数据时需要复制数据的情况。在同步复制方式下,一个采用同步复制的表发生变化时,Oracle会确保这种变化能够成功地作用在本地表和其他节点的复制表,如果失败则整个事务会被成功回滚。同步复制在网络的稳定性比较高的情况下是可行的,可以保证复制节点之间的复制数据一直保持同步。
本文根据以上几种数据同步方法中尚存在的不足进行了研究,并结合本次开发的“基于XML技术的综合娱乐系统数据同步模块开发”的实际特点,提出了基于Oracle高级复制技术的同步方案和基于程序实现的同步方案。
2.4冲突控制
数据同步冲突类型[13]:并发冲突和数据冲突
1. 删除冲突:发生在同一条记录在一个节点被删除,而在另一个节点被修改
的情况下,无法确定这条记录到底应该被删除还是应该被修改了:
2. 更新冲突:发生在两个或多个节点同时更新一条相同的记录时;
3. 唯一性冲突:当不同的节点同时添加了一条相同的记录,而记录应该具有唯一性的时候。
冲突控制办法:
1. 特权法:是指如果多个站点都对数据具有插入、修改或删除的权限,则针对不同的数据对各个节点赋予不同的优先级,当冲突发生时,保留优先级最高的那个节点的操作结果。这种方法要求不同节点对同一数据集的操作优先级都不相同,否则仍然不能避免冲突的发生.
2. 顺序法,即按照各个节点数据操作的先后顺序来解决冲突,通常是用最新的操 作 结 果 覆 盖前面的结果。采用顺序法,各节点拥有平等的数据操作权限。 这种方法要求各个节点必须记录每次操作的时间,而且当各个节点所采用的时间区域不一样的时候还存在时间转换问题。
2.5数据同步技术目前存在的问题
数据同步技术到目前为止还不够成熟,它不但具有了分布式数据库所具有的固有问题,还有其自身的一些缺点。当前比较常用几种数据库,如SQLServer、Oracle, My SQL等均内嵌了数据同步功能,它们可以实现在同种的DBMS下基于快照或基于事务的松散一致性数据复制,但这些技术还有许多不适合于具体现状的方面:
1. 不能很好的支持异构数据库间的数据同步。SQLServer, Oracle等常用的数据库软件均支持同种DBMS间的数据同步,对异种数据库的同步支持非常有限。
2. 不易实现增量式的数据同步。当前我国的网络发展并不能达到完全使用宽带的情况,一些地区主要还是以使用电话线的方式进行上网,使用增量表数据同步方式能够很好的避免采用数据复制同步方式造成的网络资源浪费的情况,为用户节约大量的网络通讯花销。
3技术背景
3.1XML技术
3.1.1XML概况
网络技术发展到今天,已经渗透到社会生活的每一个角落。而令网络如此平易近人,为大众所接受,单靠TCP/IP是远远不够的,由此HTML——超文本标记语言便应运而生,并以其简单精练的语法、极易掌握的通用性与易学性,使Web网页可以接近每一个普通人,互联网也才得以普及发展以至今日的辉煌。然而,电子商务、电子图书、远程教育等全新领域如异军突起,迅猛发展并逐渐成为互联网世界必不可少且愈发重要的组成部分,随之而来的是Web文化的复杂化、多样化、智能化,于是高容量、高信息量、高效率便成为网络信息技术发展的追求目标。与此同时,还有另一种需求变得愈来愈迫切,那便是同样的数据能否根据不同用户不同需求而以不同的效果、不同的形式表达再现出来。而这一切是HTML所不能满足的。而XML正是可以弥补这此缺陷的。
XML同HTML一样,都来自Standard Generalized Markup Language(标准通用标记语言),简称SGML。早在Web未发明之前,SGML就已存在。顾名思义,SGML是一种用标记来描述文档资料的通用语言,它包含了一系列的文档类型定义,简称DTD,DTD中定义了标记的含义,因而SGML的语法是可以扩展的。SGML十分庞大,既不容易学,又不容易使用,在计算机上实现也十分困难。鉴于这些原因,Web的发明者——欧洲核子物理研究中心的研究人员根据当时(1989年)计算机技术的能力,提出了HTML语言。
HTML只使用SGML中很小一部分标记,例如HTML3.2定义了70种标记。为了便于在计算机上实现,HTML规定的标记是固定的,即HTML语法是不可扩展的,它不需包含DTD。HTML这种固定的语法使它易学易用,在计算机上开发HTML的浏览器也十分容易。正是由于HTML的简单性,使Web技术从计算机界走向全社会,走向千家万户,Web的发展如日中天。
近年来,随着Web的应用越来越广泛和深入,人们渐渐觉得HTML不够用了,HTML过于简单的语法严重地阻碍了用它来表现复杂的形式。尽管HTML推出了一个又一个新版本,已经有了脚本、表格、帧等表达功能,但始终满足不了不断增长的需求。另一方面,这几年来计算机技术的发展也十分迅速,已经可以实现比当初发明HTML时复杂得多的Web浏览器,所以开发一种新的Web页面语言是必要的,也是可能的。正是在这种形势下,Web标准化组织W3C建议使用一种精简的SGML版本——XML应运而生了。
1998年2月,全球万维网联盟(World Wide Web Consortium,简称3WC)发布了XML1.0规范(可扩展标记语言,Extensible Markup Language),并推荐XML成为下一代互联网数据表示与交换标准。万维网联盟之所以要制定XML规范并进行大力推广,就是寄希望于XML可以实现:
1. 国际化的信息发布标准,可以独立于各种平台和系统;
2. 允许各行各业定义平台独立的协议规范来交换数据,支持电子商务等网络应用;
3. 实用化。用户可通过方便简单的软件处理数据,无需使用价格昂贵的专业软件;
4. 个性化。允许用户以自己喜欢的方式显示数据,数据内容与显示方式分离;
5. 提供元数据。用元数据来解释和描述用户使用和管理的数据信息,比如信息的来源和结构等。
事实上,XML数据正在日益普及,它的出现推动了WWW在电子商务、电子数据交换和电子图书馆等多方面的应用,至少满足了Web技术四个方面的要求:
1. 网络客户可以在不同的数据库之间传递信息;
2. 从网络服务器下载的数据可以在用户端处理;
3. 相同的数据对于不同的用户有不同的界面;
4. 相同的数据可进行不同的剪裁,满足不同的应用。
3.1.2数据同步中的XML应用
XML是可扩展标志语言(eXtensible Markup Language)的简称。像HTML一样,XML是从所有标志语言的元语-标准通用标志语言SGML(Standard Generalized Markup Language)那里派生出来的。设计之初,XML的目标之一是取代HTML为新出现的复杂的Web应用提供标准的Internet语言。然而,由于XML在可扩展性、可移植性和结构性等方面的突出优点,它的应用范围早已突破了HTML所达到的范围。
XML可以通过DTD(Document Type Definition,文档类型定义)和XML schema对其结构进行定义和验证。)CML技术支持DOM(Document Object Model,文档对象模型)和SAX( Simple Application for XML>XML简单应用程序)两种编程接口技术,还能使用XPath语言对数据内容进行查询。XML技术支持XSLT(eXtensible Stylesheet Language Transformations,可扩展样式表语言转换)格式转换,利用XSLT技术能将XML文件转换为各种不同的格式,如格式不同的XML文件、HTML文件、文本文件、无线标记语言(WML)和SVG文件等。
主要特点:
1.简单性;2.可扩展性;3.互操作性;4.开放性;5.结构化数据。
数据表示:
HTTP是一种基于文本的协议,因而缺乏表示RPC消息中的参数值的机制,这也是XML作为Web服务的一个重要成分出现的原因。XML是一项将类型和结构置于信息上层的技术,它架起了应用程序数据类型与存储和传输单元之间的桥梁,因此XML
可以被看作是一种串行格式化的传输语法,允许数据被串行化为易于被任何平台解码的消息格式,提供了在网络应用之间交换结构化数据的机制。
XML[4]采用纯文本表示,设计的初衷是为了存储、传送和交换数据的。XML是一种标记语言,标记在XML 中不是预先确定的,而必须由使用者自己定义。XML允许使用者自由发表有用的信息,不仅可以是有关数据结构的,也可以是关于数据意义的。另外,XML文档的结构、内容和外观可以作为三个不同的部分进行维护,提供了更高的独立性。
对于数据表示层来说,可扩展性是一个关键因素。为了支持可扩展性,Web服务需要一种机制以避免名字冲突,并允许一个程序只处理自己所关心的元素。XML名称空间(Namespaces)提供了一种简单、通用的方式以区分相同名字的元素或属性。为了支持可扩展性,XML中的每个元素和属性都有一个相关的名称空间。
由于XML是一种简单,与平台无关的标准,并且具有自描述性、结构化、体积小和易于网络传输等特点,作为信息与数据交流的载体则更适合应用于数据同步过程。将XML应用于同步管理模块和同步服务器,可以有效的解决传统同步模式的难题。
3.2WEB服务
3.2.1WEB服务的概况
Web服务的概念
Web服务[1]是一个软件系统,是被开发用来支持可同时操作的,跨越网络的机器对机器之间的交互。它包含一个以机器可处理格式描述的接口(特指WSDL)。其他系统同Web服务交互以一种本身的描述中规定的方式,使用SOAP消息,代表性在同Web相关的标准的联结中使用一个XML连续,利用HTTP传达(消息)。
Web服务的优势
1. 互操作性[5]:任何Web Service都可以与其他Web Service进行交互。这得益与SOAP,SOAP是所有主要供应商(以及大多数中小供应商)都支持的标准协议;这就避免了在CORBA,DCOM和其他协议之间转换的麻烦。另一个原因是编写Web Service可以使用任何语言,开发者无需要更改他们的开发环境就可以生产和使用Web Service。
2. 普遍性:Web Service使用HTTP和XML进行通信。因此,任何支持这些结束的设备都可以拥有和访问Web Service。
3. 低进入屏障:Web Service背后的概念易于理解,并且来自IBM和微软这样的供应商的免费工具箱能够让开发者快速创建和部署Web Service。此外,其中的某些工具箱还可以让已有的COM组件和JavaBean方便的成为Web Service。
4. 行业支持:所有的主要的供应商都支持SOAP和周边Web Service技术。例如微软的.net平台就是基于Web Service,因此用Visual Basic编写的组件都可容易作为Web Service部署,并有使用IBM VisualAge编写的Web Service所使用,反之亦然。
3.2.2WEB服务的基本标准和协议
Web中的XML
随着需求的发展,Web的功能不再停留在原有的静态数据获取上,而是朝着更高级、更智能的Web服务发展。简单地说,Web服务能够对数据进行动态搜索、采集和整理,为人们提供真正需要的信息。人们通过它可以得到个性化服务,方便地查找资料、购买产品,公司也可以通过它定购原材料、获取订单、出售商品。 人们渐渐地发现,由于世界上存在着如此多的、完全不同的客户平台,在不同平台间交换数据,同时还要保证数据的完整和服务的高效,这是件令人头痛的事情。在大型Web应用中,工程师们往往被数据格式的转换弄得疲惫不堪,即便是整理完成的数据,如何让各种客户端都能正确获取和理解也是不小的麻烦。最终,这一问题成为制约Web Service发展的瓶颈。因此,人们需要一种平台无关的、能够同时被人类和机器所理解和处理的文本数据格式。于是,XML诞生了。
Web服务[3]需要一种方法定义Web服务消息中使用的数据类型。XML Schema规范标准化了一个描述XML数据类型的符号集,还定义了一个内置简单数据类型的集合和在各 XML 文档中建立元素类型的机制。XML Schema规定了XML文档的逻辑结构,定义了元素、元素属性以及元素和元素属性之间的关系。
XML仍然处于不断的发展中。需要说明的是,XML本身只是一种标记语言,只是进行描述,并不提供商务逻辑,Web服务提供对这些逻辑的访问。这也是为什么Web服务的更高层的、基于XML概念同样非常重要的原因。
SOAP
SOAP定义:
简单对象访问协议[2] (SOAP,全写为Simple Object Access Protocol) 是一种简化了的XML查询界面,主要用于Web服务(Web Service)中。SOAP的出现是为了简化网页服务机(Web Server)在从XML数据库中提取数据时,无需花时间去格式化页面。
SOAP规范的其他部分介绍如何将程序数据表示为XML,以及如何使用SOAP进行远程过程调用(RPC,Remote Procedure Call)。这些可选的规范部分使用于实现RPC形式的应用程序,其中客户端将发出一条SOAP消息(包含可调用函数,以及要传送到
该函数的参数),然后服务器将返回包含函数执行结果的消息。目前,多数SOAP实现
方案都支持RPC应用程序,SOAP还支持文档形式的应用程序,此应用程序非常灵活,许多新的XML Web Service都利用这以特点来构建使用RPC难以实现的服务。
SOAP规范的最后一个可选的部分定义了包含SOAP消息的HTTP消息的样式。此HTTP绑定非常重要,因为几乎所有当前的操作系统都支持HTTP。HTTP绑定虽然是可选的,但几乎所有SOAP实现方案都支持HTTP绑定,因为它是SOAP的唯一标准协议。HTTP的普及和SOAP的简单性使用户几乎可以从任何环境中调用他们,因此成为XML Web Service的理想基础。
SOAP的组成:
1. SOAP绑定(binding),定义如何使用底层传输协议进行SOAP消息的交换。虽然SOAP本身可以和多种协议结合使用,但SOAP 1.2中只描述了在HTTP中的使用。SOAP和HTTP绑定可以同时使用SOAP的灵活性以及HTTP丰富的特性集。在HTTP中使用SOAP并不意味着SOAP覆盖HTTP现有的语义,而是SOAP 继承了HTTP的语义。
2. 一个SOAP封套(SOAP Envelope),定义了描述消息所包含信息的框架结构,即消息中包含什么信息、由谁来处理以及是否是必需的或可选的。Envelope 元素在消息体中是最上层的 XML 元素,它必须存在,实际上 Envelope基本上代表了包含SOAP 消息的XML 文档。
3. 一组SOAP编码规则(Encoding rules),定义了一个串行化机制,用于交换应用定义的数据类型的实例。SOAP编码的类型使用简单的标准类型和复合类型,如结构和数组。SOAP对数据类型的转换大多基于XML Schema,这些类型以XML文档元素的形式表现,XML Schema规范中定义的数据类型以及这些数据类型的派生类型都可以直接用作SOAP元素。
4. SOAP RPC表示,定义了如何表示远程过程调用和响应。SOAP的设计目标之一是用XML的可扩展性和灵活性封装RPC功能,在SOAP 1.2中详细定义了RPC和响应的统一表示,将对一个方法的调用和响应作为结构来建模,结构中包含了返回值,或者
还可能包括传入的参数。
SOAP消息:
SOAP消息是用XML编码的文档,由三个部分组成:
1. SOAP封套(SOAP Envelope),是描述SOAP消息的XML文档的顶点元素。
2. SOAP 消息头(SOAP Header),提供了一种灵活的机制对SOAP消息以分散的、模块化的方式进行扩充,而通信的各方(SOAP发送者,SOAP接收者以及SOAP中介)不必预先知道。SOAP消息头是可选的。
3. SOAP消息体(SOAP Body),定义了一个简单的机制来交换要发送给最终SOAP接收者的消息中的必要信息,是这些信息的容器。典型的使用是编组RPC 调用和SOAP 错误报告。
消息交换:
SOAP消息是单方向的,从一个SOAP发送者到一个SOAP接收者。但单独的消息通常可以被组合在一起形成其它消息机制。例如,SOAP通过在HTTP请求中提供一个SOAP请求消息和在HTTP响应中提供一个SOAP响应消息实现HTTP的请求/响应消息模型。
SOAP消息交换模型要求接收到一个SOAP消息的应用程序执行下列操作:
1. 识别SOAP消息中示图供给本应用的部分,本应用可以作为SOAP中介将消息的其它部分传递给另外的应用。
2. 检验SOAP消息中指定的所有必须处理的部分(在SOAP消息规范中支持强制处理部分和可选处理部分,这一功能的实现是通过对文档片断加以属性修饰而实现的),并进行相应的处理,如果这部分的内容不符合双方约定的默认定义,则丢弃该消息。如果可选部分不会影响处理的结果,处理器可以忽略在第一步中获得的被标识的部分中的可选部分。
3. 如果SOAP应用不是消息的最终目的地,它应该在删除所有自己消耗的部分,如果有必要的话,附加上处理的结果部分,并转发该消息。
WSDL:
Web服务的目标之一是允许应用程序以标准的方式在两个或多个同等的服务之间
进行选择,因为有时应用可以由作为支持网络的服务而实现的构件构造而成,甚至可以
从这些服务中进行动态选择。服务描述层定义了为程序提供足够信息所需的描述机制,使程序能够根据一定的准则选择服务,如服务的质量、安全性、可靠性等。
Web服务的接口由基于XML的WSDL定义,它提供了应用访问指定的Web服务所必需的全部信息,描述服务提供了什么功能、服务位于何处以及服务如何调用。
WSDL以XML格式描述网络服务,将服务描述为在包含面向过程或面向文档信息的消息上进行操作的一组端点。操作和消息是抽象描述的,然后绑定到具体的网络协议和
展开阅读全文