📄 基于corba的web数据库服务器.htm
字号:
(3)CORBA对象在具体程序设计语言中的实现方法。<br>
目前OMG已定义了OMG IDL到多种程序设计语言的映象规范,如IDL到C、C++、SmallTalk、Ada95、Java等。<br>
正是IDL实现了CORBA的语言独立性,因为由IDL定义的接口描述可以映射到任何一种编程语言,CORBA应用程序和组件就不依赖于同一种语言来编写。换句话说,一个C++编写的客户程序可以调用一个由Java编写的服务器对象的方法,甚至还可以是一个由COBOL编写的服务器程序。<br>
语言独立性是CORBA的一个重要特征,因为CORBA没有指定一种特定的编程语言来实现应用系统。它提供了程序员自由选择语言的权利,程序员可以选择对应用最合适的语言,或者他最熟悉的语言来开发应用。在一个应用系统中的各个组件也可以使用不同的语言来开发,如客户端程序可以用Java来实现,以提供平台可移植性,服务器端程序可以用C++来开发,以保证运行效率。CORBA使这些不同的组件间的通讯成为可能。<br>
<strong>2.3 客户码桩(Client Stub)与服务器码架(Server Skeleton)</strong><br>
应用系统开发者首先应当将各组件间的接口用IDL定义,然后用IDL编译器翻译IDL,编译器会产生针对具体编程语言的客户Stub代码和服务器Skeleton代码。Stub和Skeleton代码被认为是IDL语言与具体编程语言之间的粘合剂。Stub代码被用在客户端程序中作为客户调用服务器方法的一个界面,客户程序调用Stub代码就好象调用服务器方法一样,而Stub会负责与ORB通讯。Skeleton代码被用在服务器一端,提供对象建立的框架。对IDL中Interface的每一个Operation,IDL编译器都会在Skeleton代码中产生一个空的方法,以便程序员提供这些方法的具体实现。<br>
CORBA定义了两种客户向对象发送请求的方式:<br>
静态调用方式—由客房调用Stub代码实现<br>
动态调用方式-由动态调用接口Dynamic Invocation Interface-DII)实现,DII不需要Stub代码,客户从接口池中动态地产生一个请求由DII分发给ORB<br>
不论使用何种调用方式发送请求,ORB都会定位到对象实现、激活对象、传递请求。对象实现不需要知道请求是通过Stub还是DII方式传递过来的,也不需要知道请求来自何处。它处理接收到的请求,将输出结果返回给ORB,再由ORB返回给客户。<br>
<strong>2.4 CORBA应用的体系结构</strong><br>
为了更好地理解CORBA,我们来看一下在分布式对象计算中,不同的CORBA组件是如何协同工作的。假设客户已持有对象实现的一个有效的对象引用,于是它调用对象提供的一个方法。这个请求通过静态Stub程序传递给ORB,或者客户从接口池中动态地产生一个请求由DII分发。不论是何种情况,ORB用对象引用定位到对象实现,并负责将请求传递给管理该对象的对象适配器,对象适配器将请求传递到Skeleton程序,然后由其交给对象实现进行处理,返回的结果再经由Skeleton从对象适配器到ORB。最后,ORB将结果经Stub或DII返回客户程序。</font></p>
<p><strong><font face="宋体" size="4">3 基于CORBA的多数据源Web数据库方案</font></strong></p>
<p><font face="宋体" size="3"> 随着Internet/Intranet时代的到来。在各个办公领域,迫切需要将原有的计算机信息系统集成到新的Intranet体系结构中来。但已有的计算机信息系统是异构的、普遍存在着严重的“信息孤岛”问题,即每个子系统之间是独立的,不能有效地进行信息交换和共享。解决问题的方法是采用系统集成技术,其中关键是数据库集成技术。数据库集成技术的目标是要解决信息系统中复杂的、分布的、异构的数据库数据,以及非结构化数据的交换、转换、共享与集成。<br>
<strong>3.1 数据源集成模型</strong><br>
CORBA的软件总线概念给数据库集成技术提供了一条新的思路。CORBA的跨平台特性屏蔽了不同操作系统间的差异,使不同平台上的成员系统可以集成到同一体系中来。此外,IDL提供了对成员系统的封装和成员系统之间的隔离,任何成员系统作为一个对象,通过IDL对其接口参数进行定义和说明,就可接到ORB上,为其它系统提供服务或向其它系统提出请求,达到即插即用效果。<br>
由此可以设计一个基于CORBA的多数据库集成方案,该方案将各种主流数据库系统(如Oracle、Sybase、DB2等)集成起来,给用户提供统一的操作界面。该集成系统应该能为用户提供单一类型的数据定义和操作语言,并允许同时访问多个独立的数据库。该方案的实现思路是:<br>
将分布式系统中各数据库成员模型化为对象,而数据库系统提供的服务被模型化为对象方法,这些方法组成对象接口。这样,在每个成员系统上可以定义一个服务接口,成员系统为这些服务提供实现,也就是将参加集成的数据库通过对象封装注册到ORB总线上。客户通过以公共语言表示的请求与成员系统进行交互,对象请求代理机制负责转换请求到可用服务、传递请求到适当的系统,并提供以公共语言表示的应答返还给客户。而这一切的实现是通过对成员数据库的相关部分进行转换和集成,给用户提供一个统一的模式表示和接口而完成的。<br>
<strong>3.2 Web三层体系结构</strong><br>
CORBA分布式对象系统的最大问题是客户端和服务器大量请求的存在,在网络环境中,过多的请求将增加网络的负担,降低整个系统的性能。因此如何管理这些请求,充分利用系统资源是为CORBA系统建模时必须考虑的一个重要问题。我们将CORBA中请求交互模式分为三类:<br>
(1)传统的Client/Server模式。在这种模式下,客户对象仅仅是提出请求,而服务器对象仅仅是完成请求的操作,客户和服务器之间通过ORB直接进行通信。在这种模式下,客户端是整个应用的控制部分,不仅完成用户GUI的控制,而且要向服务器传送请求,因此相对比较复杂。而服务器因为完成的操作大多已经确定,相对比较简单。这种模式的交互比较适用于控制部分和被控部分比较明确的情况下。<br>
(2)对等交互模式。在这种模式下,客户端和服务器是一种合作关系。在这种模式下并没有严格的客户端和服务器的区分,所有的应用相互独立,各自完成一定的操作,同时又可以向其它应用提出请求,相对前一种模式而言,这种对等交互模式比较复杂。<br>
(3)代理交互模式。在这种模式下,客户端和服务器之间存在着一种特殊的服务器-代理。它代表客户端向服务器提出请求,并代表服务器向客户端提供一定的操作。这里的代理不同于CORBA中的ORB,ORB仅仅是一个CORBA对象,而这里所说的代理是用户在系统建模时提出的一种抽象的作为特殊服务器的应用对象,ORB只是请求传送的中介,而代理则是服务完成过程中的中介。尽管ORB也有中介的功能,但它无法完成负载均衡或选择服务器的功能。<br>
我们设计的多数据库Web体系中采用了第三种交互模式,其连接模型可简示如图2。</font></p>
<p align="center"><img src="image2/t7301.gif" width="333" height="112"
alt="t7301.gif (3528 bytes)"></p>
<p align="center">图2 连接模型</p>
<p><font face="宋体" size="3"> 其中数据库服务器将成员数据库模型化为一个个组件,成为可以直接插在CORBA软件总线上的对象插件。Web应用服务器就是上面所说的代理,它负责给客户端提供统一的接口,均衡客户请求并将客户请求传送到合适的数据库服务器。代理机制简化了客户方程序,并使系统具有良好的开放性、可扩展性和可伸缩性。如果今后有其它数据库系统,或其它非结构化的文件系统、快速表系统、工作流系统集成进来,只需修改Web应用服务器,而不影响客户代码。以上这些对象插件按照三层客户/服务器结构组成整个Web体系。<br>
<strong>3.3 CORBA系统分析方法及IDL接口确定</strong><br>
CORBA的最大特点是面向对象,采用面向对象的分析方法是很自然的。设计系统时,可以结合OMT、UML等面向对象设计方法。首先要建立起整个系统的框架模型,形成IDL接口文件,从具体的用户需求中抽象出所有的对象、操作及其相互之间的关系,用IDL语言描述出来。由于CORBA对用户屏蔽底层通信,在设计CORBA分布式系统时可以将重点放在系统的功能完成上。建立系统的框架模型,可以充分体现CORBA系统面向对象的特点,有助于理清思路,简化实现。其中主要有以下几个步骤:<br>
●明确系统需求,产生系统的任务说明书。<br>
●应用任务说明书建立系统的抽象模型。<br>
●在抽象模型的基础上建立系统的对象模型。<br>
●用IDL语言来描述该对象模型,得出IDL接口文件,从而形成整个CORBA系统的框架模型。<br>
在CORBA中,接口定义了一类对象的属性和行为,包括在这些对象中进行的各类操作,将对象模型化为IDL接口文件等。这是一个交互的过程,在转化的过程中,程序员可能对IDL文件和对象模型作进一步的改动,以得到最佳的结果。</font></p>
<p><strong><font face="宋体" size="4">4 结束语</font></strong></p>
<p><font face="宋体" size="3"> 基于Internet/Intranet的数据集成系统的开发又面临新的挑战。OMG已经提出了用于国际互联网的CORBA标准IIOP(Internet
Inter-ORB Protocal)。不同厂商的ORB只要支持IIOP就能互相通信,使在浏览器内运行的客户ORB能与任何其它在Internet/Intranet上运行的CORBA兼容对象通信。由于IIOP涉及了比翻译HTTP和CGI脚本少得多的开销,保证了CORBA为基于Web的应用程序提供更高性能和可扩展的能力。由此可见,基于CORBA标准的Web技术将有待进一步深入研究和开发,并有着广泛的应用前景。</font></p>
<p><font face="宋体" size="3"><span class="jj">本课题属1999年国家863科研资助项目</span><br>
<span class="zz">罗大杰(上海交通大学计算机系 上海 200030)<br>
董玮文(上海交通大学计算机系 上海 200030)<br>
董传良(上海交通大学计算机系 上海 200030)</span></font></p>
<p><font face="宋体" size="3">参考文献</font></p>
<p><font face="宋体" size="3"><span class="wx">1,钟 玲, 彭莆阳. 基于CORBA的分布式应用开发.
计算机工程与应用, 1998, 9<br>
2,于 戈, 张 斌, 王国仁, 郑怀远. 基于CORBA的多数据源集成技术. 1998,
7<br>
3,Jeremy Rosenberger. TeachYourself CORBA In 14 Days<br>
4,Steve Vinoski. Distributed Object Computing With CORBA<br>
5,张治洪, 史忠植, 谭 宁. WWW与数据库的连接. 计算机研究与发展.
1997,8<br>
6,林 凡, 郭 戈, 涂玉平, 郭学理. WWW与数据库互连技术分析.
小型微型计算机系统. 1997,9<br>
7,N.N.Duan. Distributed Database Access in a Corporate Environment Using Java. Fifth
International World Wide Web Conference, May, 1996<br>
8,Andeas Vogel, Keith Duddy. JAVA Programming with CORBA</span></font></p>
<p align="right"><font face="宋体" size="3">收稿日期:</font><font size="3"><span
class="sg">1999年7月17日</span></font></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -