对于从今天开始的分布式计算项目,有0个遗留组件,是否有充分理由研究CORBA?
答案 0 :(得分:45)
仍然存在CORBA可能是一个好答案的情况:
但话虽如此,有些替代品可以做到CORBA所做的,只有更好......或者他们声称。例如ZeroC's ICE
编辑 @fnieto会说(或暗示)ICE不是免费的,但TAO是。
这是不准确和误导性的。
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已经死了。
有很多非常性感的方法可以做同样的事情(除了上面提到的高端)。
但当然你的Milage May Vary。
答案 3 :(得分:15)
显然,这取决于您正在考虑的服务器类型和进程间通信。而且我认为Stephen C和Chris Cleeland很好地报道了Corba的积极因素。
我们的应用程序已使用CORBA(Orbix)超过10年,所以现在已经遗留下来了。而对于如何编写CORBA是一项很好的技术。但是,如果我重新开始,我可能不会使用CORBA:
现在,根据我想要的沟通类型,我可能会考虑:
这更多地基于寻找员工和专业知识,第三方支持和利用开源库以及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。
REST api 是当今更好的解决方案。它很常见,适用于 http、https,迁移到云端更简单,几乎每个 BE 开发人员都知道。您可以使用任何语言的 REST,有一些框架使其易于使用。