对于今天开始的,具有0个旧组件的分布式计算项目,是否有充分的理由考虑使用CORBA?
Answers:
在某些情况下,CORBA可能是一个很好的答案:
但话虽这么说,但有其他选择可以做CORBA所做的事情,但是效果更好……所以他们声称。例如ZeroC的ICE
编辑@fnieto表示(或暗示)ICE不是免费的,但TAO是免费的。
这是不准确和误导的。
ICE的缺点是缺乏与CORBA中间件堆栈的互操作性,但以我的经验,不同CORBA实现的互操作性也可能会出现问题。(这方面的情况可能有所改善...但是自2002年以来我还没有做过CORBA的任何工作,所以我有点脱节了。)
从现有的答案来看,这几乎成为一个宗教话题。一个人可以像半空/半满玻璃一样看待CORBA:一方面,CORBA已过时,但另一方面它相对稳定,有几种可用的实现方式以及“您知道的恶魔”。
在我的工作中,我看到CORBA部署在嵌入式系统,实时系统(CORBA具有RT扩展)等中。AFAIK替代品并不多。
CORBA的另一个“优势”是可以使用几种具有不同许可和支持模式的高质量开源实现,例如TAO,MICO,JacORB等。仍然有商业版本可用。
关于用Java实现的“大多数” CORBA应用程序-根据我的经验,情况并非如此。虽然CORBA到Java的语言映射是目前最好的语言之一(可能并不能说太多),但是Java已经有一个非常不错的分布式计算模型,它提供了超越CORBA的丰富性,而全Java应用程序使用的语言比CORBA更多。我见过的绝大多数CORBA开发都是在C ++中进行的(这也是最糟糕的语言映射)。
最后,CORBA以AMI的形式提供了标准化的异步客户端调用,但从未在服务器端提供异步处理。TAO提供了称为AMH的非标准服务器端实现。
显然,这取决于您正在考虑的服务器类型和进程间通信。我认为Stephen C和Chris Cleeland非常了解Corba的优势。
我们的应用程序使用CORBA(Orbix)已有10多年了,现在已经成为历史。对于CORBA来说,它是一种很好的技术。但是,如果我从头开始,则可能不会使用CORBA:
现在,根据我想要的通信类型,我可能会考虑:
这更多地基于寻找人员和专业知识,第三方支持以及利用开源库,然后基于CORBA的技术质量,我每天都会使用它,并且如果有点麻烦的话,它会很强大。
CORBA当然是老式的,但是它也提供了某些高级功能(请参见此处)。可以使用现代Web服务来完成此功能,但可能不是以标准的方式进行,并且也需要大量的额外工作。
但是,对于99%的分布式服务,CORBA是不可取的。它丑陋,复杂且难以使用。
这里没有人提到的一件事是“ OPEN”,“ OPEN STANDARDS”。在所有现有技术(SOAP除外)中,它是唯一真正的开放白皮书标准。该标准不依赖任何一种组织技术。RMI(Sun / Oracle),DCOM(现已停用-Microsoft)。它完全与供应商和语言无关。除了SOAP,其他DOS(分布式对象技术)技术都不是
我是一名软件架构师,经常必须选择在系统设计中应使用哪种DOS。如果不是我每次都遇到宗教战争,那将是MOM或CORBA。
这样看,如果它已经死了,那么3 / 4G网络都将无法正常工作。3GPP完全是CORBA规定的。欧洲卫星系统都是CORBA指定的。问自己为什么?这是因为它们必须基于供应商和语言无关的体系结构!