CORBA是遗产吗?

时间:2009-08-04 07:12:04

标签: corba

对于从今天开始的分布式计算项目,有0个遗留组件,是否有充分理由研究CORBA?

8 个答案:

答案 0 :(得分:45)

仍然存在CORBA可能是一个好答案的情况:

  • 当您构建分布式广告时 系统涉及多个编程 语言和多个平台,
  • 当您的系统需要发送时 复杂的数据结构......和SOAP 不削减它,
  • 当您的消息传递率很高时 ......并且HTTP没有削减它,或
  • 当你必须与之互动时 现有的CORBA客户端和/或 服务。

但话虽如此,有些替代品可以做到CORBA所做的,只有更好......或者他们声称。例如ZeroC's ICE

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

这是不准确和误导性的

  1. ICE是GPL的软件,可以免费下载。如果您/您的公司不准备遵守GPL条款,您只需支付ICE费用。 (或者,如果您需要支持。)
  2. 我使用ICE作为CORBA的替代的示例。 TAO是CORBA。 ICE作者提出了一个可靠的案例,说明为什么他们可以通过不符合CORBA而获得更好的性能。
  3. TAO绝不是唯一的免费/开源CORBA实现。我可以想到其他3个人,不在我的脑海里。
  4. ICE的缺点是缺乏与CORBA中间件堆栈的互操作性,但根据我的经验,不同CORBA实现的互操作性也可能存在问题。 (事情可能在那个方面有所改善......但是自2002年以来我没有做任何CORBA工作,所以我有点脱节。)

答案 1 :(得分:31)

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

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

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

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

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

答案 2 :(得分:19)

我认为Corba有点像原始EJB规范那样复兴,因为EJB可以通过一些配置轻松转换为CORBA bean。我怀疑大多数Corba部署实际上是用Java实现的。

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

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

  • 云计算(网络服务,可扩展计算,松散耦合,排队)。
  • REST服务(web-services lite)。
  • SOAP服务(Web服务繁重)。
  • 网格/群集计算(排队,地图缩减等)

但当然你的Milage May Vary。

答案 3 :(得分:15)

显然,这取决于您正在考虑的服务器类型和进程间通信。而且我认为Stephen C和Chris Cleeland很好地报道了Corba的积极因素。

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

  • 这很复杂,我组织中只有少数人知道这一点,因此所有难题都落在了他们身上。
  • 招聘员工可能是个问题。 CORBA再也不酷了,并没有变得越来越冷虽然在爱尔兰,C ++开发人员也有点瘦。
  • 大多数咨询公司都希望使用Web服务进行集成工作,因此如果您希望第三方进行集成,您可能还需要Web服务API。

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

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

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

答案 4 :(得分:13)

CORBA当然是老式的,但它也提供了开箱即用的某些高级功能(参见here)。这个功能都可以使用现代Web服务完成,但可能不是以标准方式完成的,并且没有大量的额外工作。

对于99%的分布式服务,CORBA是不受欢迎的。它很丑陋,复杂且难以使用。

答案 5 :(得分:11)

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

我是一名软件架构师,经常不得不选择DOS应该在系统设计中使用。如果不是我每次面对的宗教战争,那么它将是一个妈妈或CORBA。

以这种方式看待它,如果它已经死了,那么3 / 4G网络都不会起作用。 3GPP完全是CORBA指定的。欧洲卫星系统是指定的CORBA。问你自己为什么?这是因为它们必须基于供应商和语言中立的架构!

答案 6 :(得分:9)

我认为Web服务(包括REST)和Java世界EJB(甚至可能使用CORBA)的当前成熟度涵盖了分布式企业系统所需的内容。

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

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

答案 7 :(得分:1)

没有。不要使用corba。 (来自未来的答案 - 2021)

如果有人碰巧读到这个非常古老的问题,他可能会认为 corba 还活着。 2000 年至 2005 年左右构建的旧版应用程序有时仍然具有 corba。

出于多种原因,公司花费大量资金来摆脱 corba。

  • 老了
  • 很难找到了解 corba 或愿意使用这种旧技术的开发人员
  • 缺乏良好的文档,并且不会在诸如 stackoverflow 的论坛中讨论
  • 很难将其迁移到云(Azure、AWS),主要是因为
<块引用>
  • IOR 包含内部 IP,因此您可能需要将其配置为使用 FQDN,或添加 iptables,或一些路由/代理解决方案。
  • 有时应用程序每次都会在不同的端口上启动,因此您需要限制端口
  • 如果您想在 EJB 中使用 corba,...请注意,EJB 也很旧,不是一个好的选择

REST api 是当今更好的解决方案。它很常见,适用于 http、https,迁移到云端更简单,几乎每个 BE 开发人员都知道。您可以使用任何语言的 REST,有一些框架使其易于使用。

See also this stack-overflow discussion