⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于corba的数据库访问构件.htm

📁 软件工程ppt课件,想学好软件工程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      最初CORBA 1.1将ORB核心的实现交给了各个厂家,由此引来了各厂家的ORB彼此无法互操作的问题。CORBA 
    2.0增加了Internet Inter-ORB协议(IIOP)来解决这个ORB互操作的问题。IIOP是在TCP/IP协议之上的通用主干协议,它是CORBA消息交流的协议。每个CORBA兼容的ORB必须实现IIOP或提供一个与IIOP相连的半桥。<br>
      CORBA通过ORB和IDL在客户方和服务器之间实现了互操作,它将客户和服务器都抽象成对象,只是规范这些对象的接口定义,而并不关心它们功能的具体实现。客户方与服务器之间的通信由ORB这个代理来完成,对象不必关心通信的细节。CORBA技术的应用为面向对象的程序设计带来了方便。</font></p>
    <p ALIGN="left"><font face="宋体"><strong>2 Java的数据库访问技术</strong></font></p>
    <p><font face="宋体">  Java是Sun公司所推出并得到迅速发展的一门编程语言,它可以在任意硬件平台上的Java虚拟机上运行,特别是在Internet上,Java得到了广泛的应用。<br>
      Java作为数据库的前端,提供了一致性应用程序接口JDBC API。各数据库系统厂家的系统连接和通信方法各不相同,使得数据库前端的开发有较多的重复工作。JDBC则提供了对于数据库的统一的API。JDBC由一组驱动程序实现Java接口,驱动程序负责标准JDBC调用向所支持的数据库要求的具体调用的转变。这样应用程序可以不需要重新编写而移植到不同的数据库环境上。JDBC的结构如图2所示。</font></p>
    </font><p align="center"><img src="image5/p5-01.gif" width="284" height="171"
    alt="p5-01.gif (5663 bytes)"></p>
    <p ALIGN="CENTER"><font size="3"><font face="宋体">图2 JDBC结构</font></p>
    <p ALIGN="left"><font face="宋体">JDBC API中可以分为两个不同的层:应用程序层和驱动程序层。应用程序层是数据库应用程序开发者使用的,驱动程序层是由驱动程序厂家实现。每个驱动程序层必须实现Driver接口,Driver接口用来建立与数据库的连接,在大多数应用中通过DriverManager类来实现,它与数据库有一一对应的关系。应用程序层实现Connection、Statement和ResultSet接口,使应用程序可以生成语句和取回结果。</font></p>
    <p align="left"><font face="宋体">  此外JDBC还提供JDBC调用向ODBC操作转变的桥,使得JDBC可以访问更多的数据库源。<br>
      JDBC全部使用Java编写,这也限制了它只能在Java环境中应用。</font></p>
    <p ALIGN="left"><font face="宋体"><strong>3 数据库访问中间件模型</strong></font></p>
    <p align="left"><font face="宋体">  为了实现数据库访问的透明性和一致性,本文提出利用CORBA和Java技术构造一个数据库访问的中间件模型,称之为DAB(Database 
    Access Broker)。DAB是一个符合CORBA规范的对象,对象的实现采用Java语言来编写,数据库访问部分使用JDBC。客户应用程序可以利用它的IDL 
    Stubs调用它的服务,实现对数据库的访问。DAB对客户应用程序提供一致的界面,使其不必关心后台数据库的具体连接和通信。即:DAB是按CORBA规范进行封装JDBC的对象实现。<br>
      在DAB中,我们实现DBConnection、DBSQL和DBSet接口,其中DBConnection接口用于数据库的连接,支持数据库的事务(Transaction)处理,它使用java.sql.DriverManager类中的getConnection方法建立与数据库的连接,对应JDBC的Connection接口;DBSQL是向数据库发送的SQL查询或存储过程的调用代码,包括SQL修改、插入、删除或查询语句,它使用createStatement、prepareStatement或prepareCall方法,对应JDBC的Statement接口;DBSet对应JDBC的ResultSet接口,由execute、executeQuery或executeUpdate方法生成,它提供对所产生的数据表进行访问,对数据表中的数据映射成定义的数据类型:Char、Int、Float等。<br>
    </font><font size="3" face="宋体">  DAB的内部结构如图3所示,图中给出了各接口的联系。</font></p>
    </font><p align="center"><font size="3" face="宋体">  </font><img
    src="image5/p6-01.gif" width="274" height="94" alt="p6-01.gif (2094 bytes)"></p>
    <p ALIGN="CENTER"><font size="3"><font face="宋体">图3 DAB的内部结构</font></p>
    <p ALIGN="left"><font face="宋体">调用DBConnection.Execute (strSQLString)或DBSQL.Run可以创建一个DBSet,其中包含有该SQL语句执行所返回的结果集(如果有返回集的话)。DBSet的ActiveConn属性保存着当前数据库连接的引用,Source属性保存相应的SQL查询语句,此外它的集合属性Fields保存相应的表中字段。<br>
      运用DAB的应用程序一般模型如图4所示,客户程序与DAB对象之间以CORBA为通信机制,客户程序可以是Java程序,也可以是C++等其它支持CORBA规范的非Java程序,而不象使用JDBC那样只能在Java环境中运用。</font></p>
    </font><p ALIGN="center"><font size="3" face="宋体">  </font><img
    src="image5/p6-02.gif" width="278" height="82" alt="p6-02.gif (2127 bytes)"></p>
    <p ALIGN="CENTER"><font size="3"><font face="宋体">图4 DAB的应用程序模型</font></p>
    <p ALIGN="left"><font face="宋体">DAB服务对象调用org.omg.CORBA.BOA.impl<sub>—</sub>is<sub>—</sub>ready()开始响应客户请求,客户通过绑定的DAB对象,调用其方法和属性,所有的请求通过ORB代理传递给DAB服务对象,DAB服务对象执行相应的数据库操作,通过ORB代理将结果返回给客户应用程序。</font></p>
    <p align="left"><font face="宋体">  DAB客户程序执行的一般步骤是:1)指定数据库连接参数,提供给DAB的DBConnection接口,打开数据库连接;2)利用打开的数据库连接调用其Execute方法,或建立新的DBSQL接口,得到所需的数据表;3)对数据库表执行修改、添加或删除操作,在数据库表中移动记录,将记录内容提供给客户程序;4)关闭打开的数据库连接(首先关闭打开的DBSet),释放对DAB的引用。<br>
      使用DAB服务对象,客户方可以不必关心数据库连接的细节,而使用DAB对象提供的统一接口,实现对数据库的透明访问。运用CORBA技术来实现DAB对象,可以跨越不同的程序语言、操作系统以及网络平台,还可以利用CORBA已有的系统级服务。例如Name服务可以提供按名称查找对象的服务,将DAB在ORB中注册后,客户程序连接到ORB后,可以通过“DAB”这一名称找到该对象。<br>
    <strong>4 用CORBA访问数据库的其它途径</strong></font></p>
    <p><font face="宋体">  目前使用CORBA来实现数据库访问的技术日益受到人们重视,较为流行的做法是将CORBA对象作为关系数据库的前端,根据数据库结构构造相应的CORBA对象,使用IDL语言描述数据结构,客户端利用IDL 
    Stub与CORBA对象通信,而由CORBA对象实现数据库中数据的存取和查询。在已有的文献<sup>[2、3、4、5]</sup>中使用的就是这种方法。<br>
      将数据库中的数据对象化正是面向对象技术在数据库领域的应用,在进行数据库系统分析时就可以自然地将实体描述成对象,实体具有的特征被描述成对象的属性和方法,而CORBA正好是实现这些对象的上选技术。在对象数据库环境中,这些CORBA对象可以存贮在数据库中;而在关系数据库环境中则将CORBA对象作为数据库访问的中间件。这是一种较为直观的解决途径,但是它缺乏通用性,它需要针对数据库的结构和实体的内容来编写相应的对象。本文所使用的将JDBC封装成CORBA对象这一方法,具有一定的通用性,它不关心数据库的逻辑结构,数据库中数据所代表实体的逻辑由客户端处理,数据的存储则由数据库管理系统负责。封装的CORBA对象实际上起的是通用桥的作用。这种方法实现简单,但是在数据库管理系统交互方面对JDBC的依赖较强。</font></p>
    <p ALIGN="left"><font face="宋体"><strong>5 结束语</strong></font></p>
    <p><font face="宋体">  数据库访问中间件是为了解决分布式网络环境中,透明访问异种数据库资源的问题。数据库访问中间件要考虑数据库访问的透明性、响应性能和安全性问题,其中透明性是首要的核心问题。<br>
      Microsoft的ODBC(Open Database Connectivity)是最初的关系数据库访问标准,它的后续ADO和OLE 
    DB是基于COM/DCOM的数据库访问中间件,它可以以相同的界面访问关系数据库数据、OLAP数据、EMail信息和目录服务信息,实现通用数据访问。<br>
      基于CORBA构造数据库访问中间件,同样利用了CORBA本身的一些优点,如CORBA提供的透明性、将服务抽象成对象的解决方案。使用CORBA技术可以实现分布式的组件对象,实现多层的应用程序结构。因此使用CORBA构造数据库访问中间件和基于COM/DCOM的ADO一样,也是一条十分有效的解决途径。<br>
      我们可以看到数据库访问中间件的发展趋势,在解决前面提到的三个问题的同时,扩展它所能访问的数据源,加强它在Internet环境中应用的能力,也是数据库访问中间件有待于解决的问题。<br>
    <strong>作者简介:曹晓阳 </strong>博士生。主要研究领域:开放系统技术、数据库技术。<br>
         <strong>刘锦德 </strong>教授,博士生导师。主要研究领域:开放系统与中间件技术、网络多媒体和虚拟现实技术。<br>
         <strong>唐雪飞 </strong>博士,副教授。主要研究领域:开放系统与中间件技术、网络与数据库技术。<br>
      *本文研究工作得到高校博士点专项科研基金资助。<br>
    <strong>作者单位:</strong>电子科技大学计算机科学与工程学院 四川</font><sup>.</sup><font
    face="宋体">成都(610054)<br>
    <strong>参考文献<br>
    </strong>[1] 徐 波,熊 萍. ODBC数据库互操作技术综述. 
    计算机应用,1998;18(3)<br>
    [2] 熊 萍,刘锦德. 如何利用CORBA构造数据库互操作支撑件. 
    计算机应用,1998;18(3)<br>
    [3] Sean Baker. CORBA and Databases Do you really need both. OBJECT EXPERT<br>
    [4] Jian Hu, Chris Mungall. CORBA as Infrastructure for Database Interoperability. 
    Roslin Institute Edinburgh, 1997<br>
    [5] Jian Hu. Database Connectivity and Interoperability in the Internet. Roslin 
    Institute Edinburgh, 1997<br>
    [6] Microsoft. Microsoft Strategy For Universal Data Access,http://www.microsoft.com/data<br>
    [7] Robert Orfali, Dan Harkey. Instant CORBA. Wiley Computer Publishing, 1997</font></p>
    </font><p align="right"><font size="3" face="宋体"> 收稿日期:1999-03-10 </font></td>
  </tr>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -