摘要:
这是整个系列的最后一篇,对整个系列及该系列未涵盖的内容进行了总结,同时对CORBA及分布式对象计算技术的发展状况进行了简单分析。
正文:
CORBA本身是一个复杂的体系,本系列只是初步介绍了用TAO进行分布式CORBA应用的基础知识,并有选择性地略去了部分内容(如DynAny、POA Policy、Persistent Object等,关于POA Policy的相关内容可阅读参考文献5),此外,还有一些主题(如Implementation Repository、Interface Repository、Trading Service、Notification Service等)及很多实际应用中需要注意的问题也是本系列没有覆盖的,还需要大家通过深入研究和实践来掌握。
就目前来看,CORBA规范已逐步趋于成熟,并仍在不断发展、改进,一些已有的组成部分被更新、完善的同时,也有一些新的与分布式应用相关的内容被OMG组织纳入其研究范围,如:异步通信机制、针对嵌入式和实时系统等具体领域的CORBA规范、反射机制、与EJB/SOAP等的互通等,CORBA正在随着研究人员研究的深入,变得越来越庞杂。
与此同时,由于2.x规范中定义的CORBA架构存在一些局限性,其中最为典型的问题是:CORBA不支持在不破坏向前兼容的情况下为对象增加新的接口,即不能在不改变接口定义的情况下为对象增加新的功能。为此,OMG在CORBA3中引入了CORBA Component Model(CCM)以在一定程度上解决这一问题。
CCM是基于EJB和COM提出的一种新的组件模型,它在结构上更接近EJB。在CCM中,Component是支持多个接口的、可配置且可导航(即通过一个接口查询到其它接口,类似于COM中的IUnknown::QueryInterface,这在CORBA 2.x中是不可能实现的)的二进制单元。CCM一定程度上改变了我们进行CORBA应用设计的模式,使得我们由以接口设计为中心转为以组件(Component)设计为中心。
由于CCM体系十分复杂,涉及组件容器、组件实现描述语言、组件打包与部署、与EJB的互通等许多方面,虽然CCM规范发布已有数年,目前仅有少数几个部分支持CCM的商业CORBA实现面世, 著名ORB提供商BEA、IONA等已宣布将支持CCM,但相关产品尚未发布,此外,也有一些开源项目,如CIAO(Component Integrated ACE ORB)、OpenCCM等已取得一定进展,已有一些试验产品可供研究参考。
此外,CORBA提供“至多一次”的语义来确定一次访问成功与否,客户端发起一次调用,在服务器端也只能引起一次反应。CORBA没有提供功能来检查一次访问究竟是否成功的修改了要访问的对象的状态,因为缺乏这样的机制,使得提供“故障恢复”机制变得十分困难,因此CORBA把本来可能恢复的故障处理成不可恢复的。
为此,一些研究者开发出了用于分布式对象计算的新模型,如ICE就是在CORBA的基础上为简化应用复杂度,并克服CORBA存在的没有多重接口(该问题随着CCM的提出已被解决)、没有异常继承等方面存在的问题而提出的一个新的应用模型。可以相信随着研究的深入,CORBA或相关的分布式对象计算技术将变得更加易用也更加强大(当然,对于CORBA实现提供商或开源CORBA实现提供者来讲,要做的工作也越来越多)。
参考:
1. Douglas C. Schmidt and Steve Vinoski. Evolving Towards Component Middleware. http://www.cuj.com/documents/s=9039/cujexp0402vinoski/
2. Paul Harmon. OMG的CORBA 组件新模型. http://www-128.ibm.com/developerworks/cn/java/corba-comp-model/
3. Michi Henning. A New Approach to Object-Oriented Middleware. http://www.triodia.com/staff/michi/ieee/ieee.pdf
4. OMG. CORBA Components, v3.0 full specification. http://www.omg.org/cgi-bin/apps/doc?formal/02-06-65.pdf
5. Sun Microsystems, Inc. CORBA Programming with J2SE 1.4. http://java.sun.com/developer/technicalArticles/releases/corba/
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/billdavid/archive/2006/05/12/726361.aspx