与此同时,由于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实现提供者来讲,要做的工作也越来越多)。
文章来源于领测软件测试网 https://www.ltesting.net/










