基于XML和WebService技术的异构数据库集成方案一、基本技术介绍1XML技术XML是标记语言的一个开放家族,利用它可以设计描述数据的方法,通常如存储、传送或程序如何处理等等。XML是一个描述性标记语言的元语言,它使人们可以方便地为数据定义或扩展他自己的描述术语以及这些术语间的结构化关系,这就是“可扩展”的含义,也是XML的基础。XML具有如下的功能特征:1、XML是可扩展的。通过定义数据元素和属性来定制XML文档以满足特定的需求。2、XML和关系数据库关系密切。XML创建和管理层次数据结构,关系数据库系统使用关系模式来关联数据实体,虽然这两种数据结构方法大不相同,但都创建了层次结构。3、跟任何背景无关。创建和处理XML文档与具体的编程语言、操作系统、计算平台等无关。任何计算平台使用文本编辑器便可以开发XML文档。4、XML是自我描述的。一个XML文档应该是易于阅读的,这是由于定义数据元素和层次关系是在设计者自己对数据的理解基础上进行的,5、XML利于标准化数据表现方式。在不同数据库厂商开发的使用不同操作系统的数据库之间转换数据是非常复杂的过程。XML可以开发不同数据库系统都能理解的独立的数据格式。一个XML文档通常包括两个主要部分:文档类型定义(DTD)和实际内容。在DTD中作者可以定义自己的元素集合,每个元素有特定的属性和内容类型。每个应用领域可以定义DTD表示该领域的数据和信息。通过相同的DTD,不同来源的数据可以互相交换、理解、整合,甚至进一步处理,如重新组织,查询等。2WebServiceWebService是一个新的概念,但是它的系统架构以及实现技术却是完全从已有的技术发展起来的。所以它绝对不会让现有的应用推倒重来,而是现有应用的向面Internet/Intranet的一个延伸。WebService的出现满足了动态的商务合作所要求的基本功能和原则,从而使Web不仅成为信息共享的平台,而且成为服务共享的平台。其实在CORBA等体系结构中早已提出了将应用系统抽象并包装成组件、服务的思想,但是同传统的分布式计算体系结构相比,WebService优势在于:(1)WebService利用标准的Internet协议(HTTP,SMTP,FTP)解决基于Internet/Intranet的分布式计算,而RMI,CORBA等传统分布式对象结构主要用于企业内部,很难扩展到Internet上;(2)RMI,CORBA,DCOM等体系结构要求在对等体系结构间才能进行通信,即基于不同体系结构的应用系统是无法相互协作的。而WebService利用标准网络协议和XML格式进行通信,具有良好的普适性和灵活性,因此任何支持这些标准的系统都可以支持WebService。目前对WebService并没有一个严格的定义。一般认为,它是一种新型的应用程序,它向外界提供一个能够通过WEB方式进行调用的API。具有自包含(Self-contained)、自描述(Self-describing)、以及模块化的特点,可以通过Web发布、查找和调用。WebService实现的功能可以是响应客户一个简单的请求,也可以是完成一个复杂的商务流程。WebService也可以定义成一种用于应用程序集成的新技术,它可以减少公司在E-business上的花费和更快速的部署解决方案。因此WebService的更确切的解释是:WebService是一种用于应用程序集成的重要技术;是一种建立互操作分布式应用程序的新平台。WebService之所以能够具有这些功能,是因为使用了一些建立在现存的和正在出现的标准(或协议)之上的程序间通讯模型。这些标准(或协议)包括:可扩展标记语言XML、简单对象访问协议SOAP以及Web服务描述语言WSDL等。具体来说WebService都可以与其它WebService进行交互,WebService通过SOAP实现相互间的访问,这样就避免了在CORBA、DCOM和其它协议等不同协议之间转换的麻烦。还因为可以使用任何语言来编写WebService,开发者无需更改他们的开发环境就可以生产和使用WebService,同时还可以在新的WebService中使用已有的WebService而不必考虑WebService的语言,运行环境等具体实现细节。WebService的应用日益兴起,这归因于它特有的优点:普遍性:WebService使用HTTP和XML进行通信口,因此任何支持这些技术的设备都可以拥有和访问WebService。WebService不仅在计算机网络中出现,而且很有可能将在电话、汽车、家用电器等设备中出现,现在各主要设备和软件供应商都己宣布支持SOAP和周边WebService技术,相信在未来,Web服务将普遍应用于社会生活的各个领域。易实现性:WebService背后的概念易于理解,并且来自微软和SUN等这样的供应商的开发工具能够让开发者快速创建和部署自己的WebService。此外,现有的COM和JavaBean组件系统能够方便地转化成为WebService。这样就降低了WebService的开发费用,同时也加快了开发速度。松散耦合:这一特性源于对象/组件技术,当一个WebService的实现发生变更时,调用者是不会感到这一点的,对于调用者来说,只要WebService的调用界面不变,WebService实现的任何变更对他们来说都是透明的,甚至是当WebService的实现平台从J2EE迁移到.NET时,用户对此也一无所知。3简单对象访问协议S0APSOAP(SimpleObjectAccessProtoco1)是由DONBOX起草,并且获得IBM、Microsoft、SUN、Lotus、HP等大型公司支持的通讯协议规格。从SOAP的名称中我们便可以知道它是让客户端调用远程对象服务的一种沟通机制。SOAP以XML标准封装调用远程服务的格式,有别于其他分布式对象模型调用的特定格式,例如CORBA的IIOP以及DCOM的ORPC。由于SOAP以XML封装调用格式,因此它可以使用任何基于TCP/IP的应用层协议来传送,例如HTTP、TCP或是SMTP等,可以与现有的通信技术最好程度的兼容。4.NET框架.NET平台是微软公司推出的用于建立Web服务应用程序和Windows桌面应用程序的软件组件,对互联网和操作系统的设计思想进行合理延伸,使开发人员能够创建出与设备无关的应用程序,以便轻松实现互联网连接。.NET框架实现了语言开发、代码编译、组件配置、程序运行、对象交互等各个层面的功能,为Web服务及普通应用程序提供了一个托管、安全、高效的执行环境。所有在.NET平台上创建的应用程序运行都需要两个核心模块:CommonLanguageRuntime(CLR,通用语言运行时)和.NETFramework类库。CLR是一个软件引擎,用来加载应用程序,确认它们可以没有错误地运行,并进行相应的安全许可验证,执行应用程序,然后将被清除。.NETFramework类库则向程序员提供软件组件,来编写在CLR的控制下运行的代码,它们按照单一有序的分级组织提供了一个庞大的功能集,包括从文件系统到对XML功能的网访问的每一样功能。该类库为开发提供了三种基本编程模板:基于ASP.NET的Web表单应用、基于ASP.NET的Web服务应用和基于传统GUI交互的Windows应用。5新的数据访问技术ADO.NETADO.NET是MicrosoftActiveXDataObiect(ADO,ActiveX数据对象)的改进,是一个基于标准的程序设计模型,用于创建分布式的、数据共享的应用程序。使用ADO.NET的中心是数据集(DataSet),它是内存中的数据库数据的副本。数据集可以包含任意数目的数据表(DataSet),每个数据表一般对应一个数据表或视图(DataView)。一个数据集组成了数据库数据的一个“断开的”视图,可以在没有对应表或视图的数据库的活动连接情况下,存在于内存中。运行时,组件可以交换数据集,一个组件可以将数据集传递给另一个组件。为了适应这一目的,ADO.NET使用了基于XML的保持和传递格式,ADO.NET解决方案将内存中的数据(数据库)表示为一个XML文件,然后将这个XML文件发送给另一个组件,接收组件将把接收到的XML文件实例化为一个DataSet对象。用户使用DataSet对象对数据集中的内容进行处理,它允许使用与关系型模型一致的方法对数据集的内容进行加工。例如,DataSet对象有一个DataTable对象集合,每个DataTable对象都有列、行,并且与其他的DataTable对象有关联。为了协调数据集与底层的数据源之间的数据交换,ADO.NET解决方案定义了一组对象用于数据源和数据集之间的通信。主要有1、连接对象Connection,用于连接和断开数据库2、数据读取器对象DataReader,从数据库中单向读取数据。3、命令对象Command,向数据库发送Select、Insert、Update、Delete等SQL语句。4、数据适配器对象DataAdapter,从数据库将数据读入数据集,然后从数据集将已更改数据写回数据库。ADO.NET有以下几个优点。1、互用性ADO.NET可以充分利用XML的灵活性和广泛的接受性。由于XML是用于在组件间传递数据集的格式,任何可以读取XML格式的组件都可以对组件进行处理。传递组件可以简单地将数据保存为一个XML文件,然后将这个组件传递给它的目的地,接收组件可以将这个格式化的XML文件作为一个数据集来接受。2、可编程性可以通过强类型程序设计(Strongly-TypedProgramming)来对ADO.NET模型的对象进行操作。强类型编程是指以对用户重要的、并可以被程序设计环境或程序设计语言本身识别的类型进行程序设计。3、可伸缩性针对大量用户争夺有限资源的问题,ADO.NET提供了可伸缩性。由于任何ADO.NET应用程序都使用了对数据库的断开的访问方式,它并不长期保留数据库锁或活动的数据库连接,这样可以更好地利用有限的数据库资源。二、异构数据库集成的设计1数据模型由于各电厂采用的是不同的数据库系统,数据存储格式存在很大差异,为了能将来自不同数据源的数据通过网络远程传输并将数据组合起来,需要用一种统一的数据模式来描绘来自不同数据源的不同存储格式的数据。XML具有标准性、开放性、纯文本、自描绘、可扩展的特点,而且目前大多数数据库均支持数据向XML格式转化,因此使用XML作为数据的载体,充当不同数据格式向标准化格式转化的桥梁,来统一异构数据库不同格式的数据,实现不同应用程序间的对话是一种比较理想的方式。2分布式调用的方式为了实现对各电厂数据库的分布式调用,需要选择一种分布式对象模型,传统的对象模型如DCOM(微软的分布式组件对象模型)、CORBA(对象管理集团的公用对象请求代理程序体系结构)、RMI(SUN的远程方法调用)等虽然能完整的实现远程系统的分式调用,但均要求客户端与服务端具有相同的体系结构,要求服务客户端与系统提供的服务本身之间必须紧密耦合;而在电厂信息共享系统中,各电厂的操作系统及数据库结构并不相同,无法保证调用方与远程被调用方具有同样的基本结构,调用方对远程被调用方的操作系统、数据库结构和对象模型可能一无所知,因此无法采用传统的分布式对象模型。相反,WebService分布式调用服务端与客户端彼此是松散耦合的,连接的任一方均可更改执行机制而不影响程序正常运行,满足了不同体系结构的电厂信息系统对本系统保持独立性和控制权的要求。而且WebService与具体的实现无关,可以用任何语言在任何平台上实现,所实现的WebService都可以与其他WebService进行交互操作,通过SOAP实现相互间的访问,避免了在不同协议之间转换的麻烦。由于这些突出的优点,采用WebService技术来实现电厂异构数据库的信息共享成为比较合适的选择。3数据库接口由于各电厂所采用的操作系统和数据库系统有很大差异,