是CORBA的遗产吗?


79

对于今天开始的,具有0个旧组件的分布式计算项目,是否有充分的理由考虑使用CORBA?


27
老实说,我不确定它们是否有任何正当理由-这是一种可怕的技术。我在这里是前CORBA程序员。

2
很好的理由是,当CORBA首次出现时,没有可行的选择(除非您可以使用DCOM或DCE)。
skaffman

@skaffman有替代品-例如TIBCO。

当然可以,但这同样丑陋,更不用说昂贵了。
skaffman

3
@Skaffman,你在开玩笑!TIBCO Rendezvous比CORBA易于使用至少10倍。至于费用,我认为使用这些东西的IB可以负担得起。或者至少他们可以,那时候。

Answers:


46

在某些情况下,CORBA可能是一个很好的答案:

  • 在构建涉及多种编程语言和多种平台的分布式系统时,
  • 当您的系统需要发送复杂的数据结构时,而SOAP却没有削减它,
  • 当您有很高的消息传递速度...而HTTP却无法切断它时,或者
  • 当您必须与现有CORBA客户端和/或服务进行交互时。

但话虽这么说,但有其他选择可以做CORBA所做的事情,但是效果更好……所以他们声称。例如ZeroC的ICE

编辑@fnieto表示(或暗示)ICE不是免费的,但TAO是免费的。

这是不准确和误导的

  1. ICE是GPL的软件,可以免费下载。仅在您/您的公司不准备遵守GPL条款的情况下,才需要支付ICE的费用。(或者,如果您需要支持。)
  2. 我以ICE为例,替代了CORBA。TAO是CORBA。ICE作者就为什么不遵循CORBA来获得更好的性能提出了可靠的证明。
  3. TAO绝不是唯一的免费/开源CORBA实现。我能想到的还有其他3个。

ICE的缺点是缺乏与CORBA中间件堆栈的互操作性,但以我的经验,不同CORBA实现的互操作性也可能会出现问题。(这方面的情况可能有所改善...但是自2002年以来我还没有做过CORBA的任何工作,所以我有点脱节了。)


关于第1点-从跨平台和跨语言的角度来看,我期望CORBA和Web Services大致相同。每个人都有自己无法弥补的薄弱环节,但总的来说,我认为差异不大。对于这种非遗留方案,我认为这不是问题。
2009年

@djna:但是请考虑今天的非旧版应用程序是明天的旧版应用程序。当您与下一代企业应用程序集成时,当今使用多语言/多平台中间件技术可能会在5-10年内为您提供帮助。
Stephen C

@斯蒂芬。ICE唯一的问题是价格,TAO是免费的。
fnieto-Fernando Nieto

3
说得好。实际上,Java是最引人注目的免费CORBA实现。J2EE强制将IIOP作为其传输的事实,意味着CORBA现在可能比以往任何时候都更加普及和“流行”。
user207421 2011年

33

从现有的答案来看,这几乎成为一个宗教话题。一个人可以像半空/半满玻璃一样看待CORBA:一方面,CORBA已过时,但另一方面它相对稳定,有几种可用的实现方式以及“您知道的恶魔”。

在我的工作中,我看到CORBA部署在嵌入式系统,实时系统(CORBA具有RT扩展)等中。AFAIK替代品并不多。

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

关于用Java实现的“大多数” CORBA应用程序-根据我的经验,情况并非如此。虽然CORBA到Java的语言映射是目前最好的语言之一(可能并不能说太多),但是Java已经有一个非常不错的分布式计算模型,它提供了超越CORBA的丰富性,而全Java应用程序使用的语言比CORBA更多。我见过的绝大多数CORBA开发都是在C ++中进行的(这也是最糟糕的语言映射)。

最后,CORBA以AMI的形式提供了标准化的异步客户端调用,但从未在服务器端提供异步处理。TAO提供了称为AMH的非标准服务器端实现。


20

我相信,Corba在某种程度上被原始的EJB规范复兴了,因为通过一些配置就可以轻松地将EJB转换为CORBA bean。我怀疑大多数Corba部署实际上都是用Java实现的。

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

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

  • 云计算(Web服务,可伸缩计算,松耦合,排队)。
  • REST服务(网络服务精简版)。
  • SOAP服务(繁重的Web服务)。
  • 网格/集群计算(排队,映射减少等)

但是,当然,您的Milage可能会有所不同。


15

显然,这取决于您正在考虑的服务器类型和进程间通信。我认为Stephen C和Chris Cleeland非常了解Corba的优势。

我们的应用程序使用CORBA(Orbix)已有10多年了,现在已经成为历史。对于CORBA来说,它是一种很好的技术。但是,如果我从头开始,则可能不会使用CORBA:

  • 它很复杂,并且我组织中只有少数人非常了解它,因此所有困难的问题都由他们解决。
  • 招聘人员可能是一个问题。CORBA不再酷了,也没有变得更酷了,尽管在爱尔兰,C ++开发人员在地上也有些薄弱。
  • 大多数咨询公司都希望使用Web服务进行集成工作,因此,如果您希望第3方进行集成,则无论如何您可能都需要Web服务api。

现在,根据我想要的通信类型,我可能会考虑:

  • 许多小消息的协议缓冲区(我知道我必须提供传输)
  • Web服务可减少大邮件

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


@iain:好点。即使从Java(我完成了大部分CORBA开发工作)中使用,CORBA也不是简单易用的。POA / BOA之类的东西很难引起您的注意。
斯蒂芬·C

3
是的,特别是POA的内容比应做的要难
iain

2
随着IDL到C ++ 11语言映射的标准化,学习和使用CORBA变得更加容易。语言映射很简单,并且可以从STL进行尽可能多的重用。您仍然需要学习POA,但这并不难。
约翰尼·威廉森

13

CORBA当然是老式的,但是它也提供了某些高级功能(请参见此处)。可以使用现代Web服务来完成此功能,但可能不是以标准的方式进行,并且也需要大量的额外工作。

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


12
考虑到最后一点,这就是为什么人们想出了soap / ws- *的原因。现在这也很丑陋和复杂。
leeeroy

当您使用可为您做大部分幕后工作的框架时,Soap并不难看。
arg20 2011年

您有什么建议?
schoetbi 2011年

5
@ arg20-这有点像说如果您看不到它,SOAP并不那么丑陋:-)
Stephen C

12

这里没有人提到的一件事是“ OPEN”,“ OPEN STANDARDS”。在所有现有技术(SOAP除外)中,它是唯一真正的开放白皮书标准。该标准不依赖任何一种组织技术。RMI(Sun / Oracle),DCOM(现已停用-Microsoft)。它完全与供应商和语言无关。除了SOAP,其他DOS(分布式对象技术)技术都不是

我是一名软件架构师,经常必须选择在系统设计中应使用哪种DOS。如果不是我每次都遇到宗教战争,那将是MOM或CORBA。

这样看,如果它已经死了,那么3 / 4G网络都将无法正常工作。3GPP完全是CORBA规定的。欧洲卫星系统都是CORBA指定的。问自己为什么?这是因为它们必须基于供应商和语言无关的体系结构!


2
Ermm ...过去,我参与了OMG标准的开发,我可以告诉您,这些过程并不总是像人们希望的那样开放和透明。从历史上看,OMG一直远离合规性问题……不是IETF或W3C在此方面做得更好。
斯蒂芬C

1+ @Selvyn我一直在寻找此信息
Tony Shih

@ Selvyn,Michi Henning提出了一个非常令人信服的论点,即OMG的开放性是造成该问题的系统原因-queue.acm.org/detail.cfm?id=1142044。好读。
2015年

9

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

我建议您应该仔细考虑的一个方面是分布式系统中需要异步交互的程度。我假设任何规模不大的分布式系统都需要异步通信,并且所选的基础结构应支持异步处理,通常意味着排队。

这与使用WebServices(或确实是CORBA)并不矛盾,但它确实指出了产品选择的一个方面,在使分布式处理继续进行的最初兴奋中,这一方面可能会被忽略。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.