CORBA是遗产吗?

fly*_*ire 76 corba

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

Ste*_*n C 45

仍有一些情况下CORBA可能是一个很好的答案:

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

但话说回来,有些替代方案可以做到CORBA所做的,只有更好......或者他们声称.例如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工作,所以我有点脱节.)

  • 说得好.实际上*Java*是一个最引人注目的免费CORBA实现.事实上,J2EE要求将IIOP作为其传输,这意味着CORBA现在可能比以往任何时候都更加普遍和"现在". (3认同)

Chr*_*and 31

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

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

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

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

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


And*_*ell 19

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

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

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

  • 云计算(Web服务,可扩展计算,松散耦合,排队).
  • REST服务(web-services lite).
  • SOAP服务(Web服务很重).
  • 网格/集群计算(排队,映射减少和类似)

但当然你的Milage May Vary.


iai*_*ain 15

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

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

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

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

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

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

  • 是的,特别是POA的东西比它应该更难 (3认同)
  • 随着IDL到C++ 11语言映射的标准化学习和使用CORBA更容易.语言映射是直接的,并且可以从STL中尽可能多地重用.你仍然需要学习POA,但这并不难. (2认同)

ska*_*man 13

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

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

  • 鉴于最后一点,这就是人们想出肥皂/ ws-*的原因.现在这也是丑陋和复杂的. (12认同)
  • @ arg20 - 这有点像说如果你看不到SOAP那么丑陋:-) (5认同)

小智 11

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

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

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

  • 呃……在过去,我参与了 OMG 标准的制定,我可以告诉你,这些过程并不总是像人们希望的那样公开和透明。而且 OMG 历来远离*合规*问题……并不是说 IETF 或 W3C 在这方面做得更好。 (2认同)

djn*_*jna 9

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

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

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