CORBA是遗留的吗?

对于从今天开始的分布式计算项目,使用0个遗留组件,有没有什么好的理由来研究CORBA?

CORBA仍然是一个很好的答案:

  • 当您正在构build一个涉及多种编程语言和多个平台的分布式系统时,
  • 当你的系统需要发送复杂的数据结构…而SOAP不会削减它时,
  • 当你有很高的消息率…和HTTP不会削减它,或
  • 当您必须与现有的CORBA客户端和/或服务进行交互时。

不过话说回来,CORBA所做的只有更好的select……所以他们声称。 例如ZeroC的ICE

EDIT @fnieto编钟说(或者暗示)ICE不是免费的,但是TAO是。

这是不准确的和误导的

  1. ICE是GPL的软件,可免费下载。 如果你/你的公司没有准备好遵守GPL条款,你只需要支付ICE的费用。 (或者如果你需要支持。)
  2. 我使用ICE作为替代 CORBA的一个例子。 TAO是CORBA。 ICE的作者提供了一个可信的案例,说明为什么不符合CORBA标准可以获得更好的性能。
  3. TAO绝不是唯一的免费/开源CORBA实现。 我可以想到另外3个人,我的头顶。

ICE的缺点是缺乏与CORBA中间件堆栈的互操作性,但是根据我的经验,不同CORBA实现的互操作性也可能是有问题的。 (事情可能在这方面有所改进……但自2002年以来,我还没有做过任何CORBA工作,所以我有点失去联系。)

从现有的答案来看,这几乎成了一个宗教话题。 一个人可以像半空/半满的玻璃一样看待CORBA:一方面,CORBA是过时的传统,另一方面相对稳定,有几个可用的实现和“你知道的魔鬼”。

在我的工作中,我看到CORBA部署在embedded式系统,实时系统(CORBA有RT扩展)等等。 AFAIK没有太多的select。

CORBA的另一个“优势”是具有不同的许可和支持模式的几个高质量的开源实现,例如TAO,MICO,JacORB等。 还有商业版本可用。

关于在Java中实现的“大多数”CORBA应用程序 – 这不是我的经验。 虽然CORBA到Java的语言映射是最好的之一(可能没有太多说法),但是Java已经有了一个非常好的分布式计算模型,它提供了CORBA之外的丰富性,而所有的Java应用程序都使用CORBA。 我见过的绝大多数CORBA开发都是C ++(也是最差的语言映射)。

最后,CORBA以AMI的forms提供标准化的asynchronous客户端调用,但从不在服务器端提供asynchronous处理。 TAO提供称为AMH的非标准服务器端实现。

我相信Corba被原来的EJB规范所重振,因为EJB可以通过一些configuration轻松地转化为CORBA bean。 我怀疑大多数Corba部署实际上是用Java实现的。

至于受欢迎程度,我认为可能会有几十年的高端部署,但对大多数人来说,Corba已经死了。

有很多非常性感的方式来做同样的事情(除了上面提到的高端)。

  • 云计算(Web服务,可伸缩计算,松耦合,排队)。
  • REST服务(networking服务精简版)。
  • SOAP服务(networking服务很重)。
  • 网格/集群计算(排队,映射减less和类似)

但是,当然你的Milage May Vary。

显然这取决于您正在考虑的服务器types和进程间通信。 我认为斯蒂芬·C和克里斯·克莱兰很好地涵盖了科巴的积极因素。

我们的应用程序已经使用CORBA(Orbix)超过10年,所以现在是遗留的。 而对于如何写CORBA是一项很好的技术。 但是,如果我重新开始,我可能不会使用CORBA:

  • 这个问题很复杂,我组织中只有很less的人知道,所有的难题都要解决。
  • 招聘人员可能是一个问题。 CORBA只是不再酷,并没有变得更酷虽然在爱尔兰的C ++开发者也是有点薄。
  • 大多数咨询公司都希望使用Web服务进行集成工作,所以如果您希望第三方进行集成,您可能还需要Web服务API。

现在取决于我想要的沟通types,我可能会考虑:

  • 协议缓冲区的很多小消息(我知道,我将不得不提供运输)
  • Web服务以获得更less的大消息

这更多地基于find人员和专业知识,第三方支持和利用开源库,然后是我每天使用的CORBA的技术质量,如果有点麻烦的话,它是强大的。

CORBA当然是老式的,但它也提供了一些开箱即用的高级function(参见这里 )。 这些function都可以使用现代Web服务来完成,但可能不是以标准的方式进行的,也不是没有额外的工作。

对于99%的分布式服务,CORBA是不可取的。 这是丑陋,复杂和难以使用。

在这里没有人提到的一件事就是OPEN,OPEN STANDARDS。 在所有存在的技术(除了SOAP)之外,这是唯一真正开放的白皮书标准。 该标准不依赖于任何一种组织技术。 RMI(Sun / Oracle),DCOM(现在已经不存在 – 微软)。 它完全是供应商和语言中立的。 除了SOAP之外,其他DOS(分布式对象技术)技术都没有

我是一名软件架构师,经常不得不做出select,在系统devise中使用哪个DOS。 如果不是我每次面对的宗教战争,它可能是MOM或CORBA。

这样看,如果是这样的话,3 / 4Gnetworking都不会工作。 3GPP完全是CORBA规定的。 欧洲卫星系统是CORBA规定的。 问自己为什么? 这是因为它们必须基于供应商和语言中立架构!

我想说,当前Web服务(包括REST)和Java世界EJB(甚至可能使用CORBA)的成熟度将涵盖分布式企业系统所需要的。

我build议你应该仔细看看的一个方面是你的分布式系统中需要的asynchronous交互的程度。 我假设任何非平凡规模的分布式系统都需要asynchronous通信,所选基础架构应支持asynchronous处理,通常意味着队列。

这与使用WebServices(或实际上是CORBA)并不矛盾,但它确实指出了产品select的一个方面,在获得一些分布式处理的最初兴奋中可能被忽视