方兴未艾的CORBA

一直以来,面向对象的技术(Object Orientation,OO)是软件界努力追求的目标,传统的对象技术通过封装、继承及多态提供了良好的代码重用功能。但是这些对象只存在于一个程序中,外面的世界并不知道它们的存在,也无法访问它们。要解决这些问题就需要提供一个标准的构件框架,使不同厂家的软件通过不同的地址空间、网络和操作系统交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说都是透明的。因此有关对象中间件的标准相继问世,像OMG组织(Object Management Group)的公用对象请求代理程序结构(Common Object Request Broker Architecture,CORBA)、Microsoft的构件对象模型(Componet Object Model,COM)以及IBM公司的系统对象模型(System Object Model,SOM)等,这些标准都极大地促进了对象中间件技术的发展。
CORBA概要描述
---- CORBA是OMG组织在1991年提出的公用对象请求代理程序结构的技术规范。CORBA有很广泛的应用,它易于集成各厂商的不同计算机,从大型机一直到微型内嵌式系统的终端桌面,是针对大中型企业应用的优秀的中间件。最重要的是,它使服务器真正能够实现高速度、高稳定性处理大量用户的访问。现在很多大型网站后端的服务器都运行CORBA,其中有些网站您可能每天都在访问。
---- CORBA的底层结构是基于面向对象模型的,由OMG 接口描述语言(OMG Interface Definition Language,OMG IDL)、对象请求代理 (Object Request Broker,ORB)和IIOP标准协议(Internet Inter-ORB Protocol,也称网络ORB交换协议)3个关键模块组成。
---- 使用接口描述语言编写的对象接口,使得与语言无关的独立性成为可能。IDL使得所有CORBA 对象以一种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA或Java)到IDL的“桥梁”。CORBA对象的互通信要以对象请求代理为中介,这种互通信可以在多种流行通信协议(如TCP/IP或IPX/SPX)之上实现。在TCP/IP上,来自于不同开发商的ORB用IIOP标准协议进行通讯。
---- 我们知道,为了保持CORBA的商业中立性和语言中立性,必须有一个中介,存在于像C++ CORBA 服务器代码和Java CORBA客户机这样的实体中间,这就是IDL。一个底层对象的若干相关方法和属性被IDL集入一个单一接口。一旦IDL接口定义完成,它可以以Stub码或框架代码的形式编译成所选用的语言。在所有的ORB中都有IDL编译器。
---- 值得注意的一点是,IDL不同于其他的面向对象程序设计语言,我们不能用它指定所定义的类或方法的具体实现。因此,仅仅将它作为一种定义底层对象接口的语言要好得多。
ORB接口结构
---- 为了创建一个遵从CORBA规范的应用程序,ORB是CORBA必须提供的。没有ORB,CORBA应用程序就无法工作。CORBA ORB最显著的功能,是对应用程序或是其他ORB的请求予以响应。实现细节对软件开发者的透明性,是ORB的一个杰出的特性。
---- 在CORBA应用程序运行期间,ORB可能被请求做许多不同的事情,包括查找并调用远程计算机上的对象、负责不同编程语言之间的参数转换( 如C++到Java)、用动态方法调用激活远程对象等等。
---- 图1所示为一个独立的ORB的结构,箭头说明ORB的调用关系。为了提出一个请求,客户端可以使用动态调用接口(Dynamic Invocation)或者客户端的Stub程序。客户端也可以直接和ORB交互。

---- 对象的实现(Object Implementation)通过IDL静态骨架(IDL Static Skeleton)或动态骨架(Dynamic Skeleton)的调用来接受请求。
---- 图2所示为一个远程调用过程。为了调用远程的对象实例,客户端首先获取它的对象参数。客户端在进行远程请求时使用与本地请求相同的代码,只不过用对象参数代替了远程实例。当ORB检测对象参数并发现目标是远程对象的时候,它会调度这些参数,把请求转移到网络上,从而连接到远程对象的ORB上。ORB可以从对象参数中判断出目标对象是远程的,客户端却做不到这一点。当客户端发出请求时,对象参数不用去分辨目标对象的位置。这保证了对象位置的透明性??CORBA的这些基本原理简化了分布式对象的计算机应用的设计。

基于CORBA应用的优点
---- 使用CORBA到底有什么好处呢?就像不同部门间需要协同工作来获取最大利润一样,不同的计算机应用之间也需要协同工作。CORBA能完成这些任务。它是开放式的、独立于厂商、用于网络上计算机应用的底层结构。任何厂家、计算机、操作系统、编程语言及网络环境下的基于CORBA的应用均使用IIOP标准协议,所以任何基于CORBA的应用均能协同工作。
---- 在小型的Client/Server模式的应用系统中使用CORBA,能给系统提供可靠的、标准的底层结构。可以使用CORBA来构建、运行在不同平台上的、用不同编程语言实现的客户端及服务器端的应用程序。如果企业广泛使用基于CORBA的应用,会带来巨大的商业利益。企业中的不同的应用系统都有不同的功能,能够处理不同的数据,这些系统如果能结合起来协同工作,就会产生更大的商业价值。如果应用系统都是用CORBA来实现,就可以容易地移植到网上,企业内部可以通过网络协同工作,产品订货单就会滚滚而来了。
---- 随着业务的不断扩展,公司的电子商务站点的负载会不断增大,总有一天负载量会超过系统预先设计的支持能力。可以使用CORBA来制作基于对象模型的服务器端的应用系统,解决系统负载的问题。考虑到当前的负载及以后可能达到的负载情况,可以选择ORB,它可以在多个服务器之间实现负载均衡。它是基于OMG可移动对象适配器的,当系统负载较重时(比如运行基于Web的应用),可以更充分地利用系统硬件资源。
---- 如果应用系统需要很高的稳定性(比如股票或证券方面的应用),可以利用CORBA提供的容错机制。CORBA的容错机制不仅能实现负载均衡,还能使每一个对象同时在两个或多个服务器上运行,当其中的一个出现故障时,系统能自动切换到另一个服务器。如果多个服务器的硬件配置相同,服务器会拥有很高的稳定性。
---- CORBA对象可以用任何一种CORBA软件开发商所支持的语言,如C、C++、Java、Ada和Small talk等等来编写。同样,CORBA对象可以运行在任何一种CORBA软件开发商所支持的平台上,如Solaris、Windows 95/NT、Open VMS、Digital Unix、HP-UX 或AIX 等。这意味着可以在Windows 95下运行Java应用程序,同时动态调入并使用C++对象,而实际上该对象可能存储于一个在Internet上的Unix Web服务器上。
---- 目前,对于较为流行的编程语言(包括C++、Smalltalk、Java和Ada 95),已经有了许多第三方的ORB。随着其他语言的逐渐流行,CORBA开发商毫无疑问地要做出相应的ORB来支持它们。
CORBA应用前景
---- 成上千万的站点依赖于CORBA搭建企业应用、Internet应用及其他应用,有许多成功使用CORBA的案例。
---- CNN正在使用一个基于CORBA事件服务的应用系统。系统用于把那些不同来源的、不同格式的、不同类型的机器上的大量新闻资料分发给所有的新闻编辑。新闻编辑再利用一个自动过滤程序来审核这些发来的消息,并把那些与自己工作方向相符合的重要稿件做上标志,过滤出来。波音公司把接收订单、制造、交货和维修4个最重要的制造系统方面的应用集成在一个综合的CORBA底层结构上,这些系统担负着飞机生产的整个过程。Charles Schwab公司构建了一个基于CORBA的商业应用,利用该系统来与5000个客户保持联系,处理的业务额高达数亿美元。
---- 对象中间件技术发展迅速,各大软硬件厂商都在积极参与有关标准的制定和产品开发工作,像IBM、HP、DEC、AT&T、ICL、Microsoft等都制定了相应的战略。许多对象中间件的专门厂商也相继诞生,未来的对象中间件市场将会出现群雄逐鹿的局面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值