摘要:本文分析了Web Service的特点,提出了一种基于Microsoft.NET的 Web Service技术访问分布异构数据库的体系结构,并采用.NET技术实现了原型系统。在原型系统中,使用Web Service将分布于Internet上的不同的数据库系统中的数据集成,向访问数据库的应用程序提供统一的数据操作接口,实现了分布式数据库的透明访问。
关键词:异构数据库;.NET技术;XML Web Service;
摘要:本文分析了Web Service的特点,提出了一种基于Microsoft.NET的 Web Service技术访问分布异构数据库的体系结构,并采用.NET技术实现了原型系统。在原型系统中,使用Web Service将分布于Internet上的不同的数据库系统中的数据集成,向访问数据库的应用程序提供统一的数据操作接口,实现了分布式数据库的透明访问。
关键词:异构数据库;.NET技术;XML Web Service;
1、引言
随着Internet的迅速发展,基于Web的信息交流、共享与协作成为企业的重要发展方向。企业的大量重要的信息都是通过数据库系统进行存储和管理的,而不同的企业或者同一企业的不同部门往往采用了不同的数据库管理系统,如Oracle、DB2、Informix、Sybase、MS SQL Server等,而且这些不同的数据库管理系统在地理位置上往往也是分布的,只能通过Internet访问。例如某公司在北京,上海,南京,武汉等地都有分公司,甚至在国外也有分公司。各分公司可能安装了不同的数据库管理系统。即使该公司进行了信息系统规划,但是,随着时间的推移,人事的变动以及数据库技术的进步和数据库市场的变化,仍然可能出现分布的异构数据库的情况。该公司的管理者对下级各分公司,各部门要进行统一协调的管理,调度,以降低成本岣呱剩銮抗镜木赫?就必须对这些分布异构数据库进行集成。
2、基于Microsoft .NET的Web Service
2.1 Web Service简介
Web Service是一种构建开放的分布式应用程序的模型,它能在所有支持Internet通信的操作系统上实现。
Web service体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于 Web Service构件:Web Service软件模块及其描述。在典型情况下,服务提供者托管可通过网络访问的软件模块(Web 服务的一个实现)。服务提供者定义 Web Service的服务描述并把它发布到服务请求者或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用 Web Service实现或同它交互。图 1 图示了这些操作、提供这些操作的组件及它们之间的交互[1]。
Web Service 的所有协议都基于标准的Web协议,诸如:HTTP,扩展的标记语言XML,简单对象访问协议SOAP,Web服务描述语言WSDL,通用描述、发现与集成UDDI等。这些协议的关系如图2所示[2]。协议组成堆栈的形式,每一个下层提供对它上层的支持,同时每一个上层都必须基于所有的下层协议之上。
Web 服务协议栈的基础是网络层。Web 服务要被服务请求者调用,就必须是可以通过网络访问的。HTTP 凭借其普遍性,成为了Internet可用的 Web 服务真正的标准网络协议。Web 服务还可以支持其它Internet协议,(这句话什么意思,要说完整)
SOAP以XML标准封装调用远程服务的格式,有别于其它分布式对象模型调用特定的调用格式,例如CORBA的GIOP以及DCOM的ORPC。由于SOAP以XML封装调用格式,因此它可以使用任何的实体传输层来传送,例如HTTP,TCP或是SMTP等。
WSDL 定义了服务交互的接口和结构,是基于 XML 的服务描述的标准。WSDL使用XML计划来描述Web Service的结构。
UDDI注册和发布Web Service。UDDI使用XML计划定义注册表的结构,使用SOAP指定与注册表的通信。[1]
以往分布式应用程序的模型都是基于组件的对象模型,比如:公共对象请求代理CORBA,分布组件对象模型DCOM, 远程方法调用RMI和对象请求代理交互协议IIOP,都依赖于其特殊的对象模型协议。这些对象模型协议在跨平台,穿越防火墙以及协议间的互操作方面都非常困难。而Web service的构建所基于的一套标准定义了应用程序如何在Web上实现互操作性,因此,Web Service令基于组件的开发和web的结合达到最佳;另外,利用了SOAP和XML对这些服务建立了通信模型从而消除了特殊对象模型之间进行交互的障碍。
2.2 在Microsoft .NET上实现Web Service
实现Web Service的方式多种多样,Microsoft .NET的ASP.NET是创建、部署和使用XML Web Service的较好的平台。
(1)建立Web Service
使用ASP.NET将类外置为Web Service,必须将类放入.asmx文件中。.asmx文件是Web Service的入口。Web Service的代码既可以是.asmx文件,也可以是后台代码文件。如下:
<%@ WebService Language="C#" Class="WebServiceClassName" %>
using System.Web.Services;
public class WebServiceClassName
{
[WebMethod]
public DataType DoSomeThing()
{
}
}
Web Service 指示符指定了.asmx文件中使用的语言,命名了外置为Web Service的类。(.asmx文件中可以包含多个类,但只有一个类可以用作Web Service)
在用于Web Service 的方法前添加WebMethod属性(Web Service的类及公开的方法必须声明为public)。
(2)部署Web Service
ASP.NET Web Service的部署工作很简单:只需要把.asmx文件放在Web应用程序的目录中。
(3)测试Web Service
对于Web Service的测试,用户不必编写测试客户机程序来测试Web Service。ASP.NET 提供了可以测试Web Service的测试页,同时提供WSDL文件格式的Web Service的结构化描述。测试页的路径是:http://WebServiceSite/ WebServiceAppPath/filename.asmx。filename.asmx?wsdl是Web Service描述的连接。
(4)消费Web Service
消费Web Service即其他应用程序调用Web Service。在Microsoft.NET中,使用代理类将Web Service的功能组合到其他应用程序中。代理类可以引用远程的Web Service,在用户的应用程序中使用其功能。如图3所示:
3、基于.NET的分布式异构数据库的集成
3.1 三层架构简介
目前,三层架构由于系统的层次和逻辑清晰,系统开发和维护的成本低以及系统的扩展性强等优点被广泛采用。.NET的Web分布式应用程序也采用三层架构,它逻辑地分为三个基本层,如图4所示[3]。
·表示层:向用户浏览器提供丰富、灵活和交互的Web界面。具有在平台之间提供更大程度的可移植性的优点。主要由ASP.NET应用程序来实现。
·业务逻辑层:该层被分为应用程序服务器与服务,它们可用于支持客户端。可以使用 .NET 框架编写 Web 应用程序以利用 COM+ 服务、消息队列 (MSMQ)、目录服务和安全性服务。应用程序服务反过来可以与数据访问层上的若干个数据服务进行交互。
·数据访问和存储层:支持数据访问和存储的数据服务包括:ADO.NET,通过使用脚本语言或编程语言提供对数据的简化编程访问。OLE DB,由 Microsoft 开发的公认的通用数据提供程序。XML,用于指定数据结构的标记标准。
3.2 利用.NET的XML Web Service技术实现分布式异构数据库的访问
Microsoft.NET的XML Web Service技术为实现分布式异构数据库的访问提供了强有力的支持。基于XML Web Service技术访问分布异构数据库的体系结构充分利用.NET的Web分布式应用程序三层架构的优点,是一个基于 Web 应用程序松散耦合三层架构:最底层为各分布的异构数据库,其上为两层XML Web Service。其结构如图5所示
图5 基于XML Web Service访问分布异构数据库
|
在数据库之上,针对不同的数据库,建立相应的XML Web Service。该XML Web Service利用ADO.NET中的数据提供程序所包含的两个用于访问企业数据库的数据提供程序:OLE DB .NET 数据提供程序和 SQL Server .NET 数据提供程序,可以连接不同数据库。
该XML Web Service主要连接相应的数据库,执行对该数据库的检索,插入,更新等一些数据操作,并向其客户端提供数据库的操作方法,使用DataSet向客户端提供数据和从客户端获得数据。
由于位于不同地点的不同数据库系统之上的XML Web Service统一以DataSet向数据集成XML Web Service提供数据并提供统一的公开方法,从而屏蔽了不同数据库管理系统的异构信息。使得数据集成XML Web Service不必理会不同数据库的差异,集中处理各分布的DataSet的集成。
在此之上的XML Web Service是数据信息集成层。该层通过HTTP调用底层分布的XML Web Service的公开的方法,获得来自不同数据库系统的数据,并将这些处于不同DataSet中的数据集成到一个DataSet中,通过向上公开的方法将数据提供给访问数据库的应用程序。
该层对访问数据库的应用程序屏蔽了数据库的分布信息,使访问数据库的应用程序对数据的操作就像是在使用一个数据库。
这个架构的主要节点是数据集成XML Web Service。它的关键在于DataSet的集中与分散,即当外部应用程序读取数据库数据时,该层将从多个底层XML Web Service获取多个DataSet并将其集成到一个DataSet中;当外部应用程序更新数据时,该层将判断被更新的记录属于那个数据库并调用相应的XML Web Service的公开方法更新该数据库。为了达到此目的,在该层设有一个数据结构,该数据结构记录各分散的DataSet的相关信息:各分散的DataSet在集成DataSet中的位置。当将从底层XML Web Service获取的多个DataSet集成到一个DataSet中时,将信息填入数据库;当外部应用程序更新记录并通过DataSet传回时时,该层从传回的DataSet中获取被更新改的记录数据及位置,根据记录数据结构中各分散的DataSet的信息,确定被更新的记录属于哪一个分散DataSet,从而更新该DataSet并调用相应XML Web Service的方法完成更新。
该架构的原型系统已完成各分布的数据库信息的集成以及数据的更新等功能,实现了分布式数据库的透明访问。
3.3 原型系统的特点
原型系统充分利用ADO.NET的特点:断开式数据结构、与 XML 的紧密集成、能够组合来自多个、不同数据源的数据的通用数据表示形式以及为与数据库交互而优化的功能。相对于其它分布异构数据库的实现,该系统有如下优点:
·分布性
如上所述,本文提出的架构是在各分布的异构数据库之上架构了两层XML Web Service。由于XML Web Service的所有协议都基于标准的Web协议,客户端可以通过Internet调用XML Web Service,获得和发送基于XML的串行格式的数据。这样,即使各异构的数据库在地理上分布地很广,对于位于不同地点的不同数据库系统之上的XML Web Service,其客户端――数据集成XML Web Service仍然可以穿越防火墙,通过Internet得到相同格式的数据。
·灵活性
与数据处理主要依赖于基于连接的双层模型不同,该架构使用多层结构,数据处理采用断开方式,因此具有更佳的可缩放性。
该架构顶层的XML Web Service可以根据需要灵活添加或删除局部数据库,而只需要对数据集成XML Web Service作少量修改。
·健壮性
该架构不会因为某一个局部数据库系统的崩溃而导致整个系统不工作,而且,当某一个局部数据库系统崩溃而采用其备份数据库时,该架构可以方便地用备份数据库替换崩溃的局部数据库系统。
·简化应用程序开发
在该架构之上开发引用程序将与特定的数据库管理系统无关,只需要了解数据库总的数据及顶层XML Web Service提供的数据库操作方法。
4、结论
Web Service是可以通过Internet访问的应用逻辑单元,可以说是基于组件的分布式技术在Internet上的扩展。它在创建跨平台,跨Internet,适应Internet的可伸缩性的应用程序时,具有非常大的优势。通过Web Service对分布于Internet上的不同数据库进行整合,实现分布式数据库的透明访问,可以大大方便公司内部以及公司之间的信息交流与共享。下一步要完成的工作将是在数据集成XML Web Service层的用户认证、权限、安全以及数据完整性、一致性策略。
参考文献
[1], Heather Kreger 《Web 服务概念性体系结构》(Web Services Conceptual Architecture)
IBM Software Group 2002 年 4 月
2, Russ Basiura Mike Batongbacal 等著 康博译《ASP.NET Web 服务高级编程》 清华大学出版社 2002年6月
3, Ashish Banerjee Aravind Corera 等著 康博译 《C# Web 服务高级编程》 清华大学出版社2002年6月