为什么WebServices优于CORBA?
答案 0 :(得分:6)
我怀疑一切都是从防火墙问题开始的:CORBA请求是二进制的,正常工作需要多个随机端口,因此CORBA请求和响应曾经被防火墙首次出现时阻止。 HTTP和FTP也使用幻像端口,但这些协议的使用范围要广得多,因此很明显防火墙必须配置为允许它们。因此,开发人员不能依赖在服务器和最终用户PC之间建立CORBA连接的可能性,并且需要使用更多防火墙友好的方法。
在专用服务器之间的通信中,防火墙的出现问题远不如使用单独的网络,IP / MAC过滤,专用防火墙等。我认为CORBA和JDBC一样,仍然用于在服务器之间传递数据。
这也可能是CORBA消息使用对齐字段的因素(用于匹配C / C ++数据结构中使用的边界对齐)。派生协议(如Google Protocol buffers)不会仅为了对齐而发送不必要的字节。因此,它们是紧凑的,并且当需要二进制消息和快速预生成的消息解析器时,这些协议可能是优选的。我觉得的协议缓冲区非常类似于设计的CORBA(类似IDL的编译器,存根和服务器,二进制消息, 语言互操作性真的远没有下降,在许多谷歌服务内部使用。
虽然CORBA框架很复杂,但“正确完成”的Web服务堆栈也不是很简单,所以我不认为标准的复杂性是一个问题。同样,虽然原始的OMG规范文档可能看起来很糟糕,但类似的SOAP / WDSL规范同样复杂,可能难以以易于阅读的方式记录标准。
CORBA协议不是专有的,它们已经在自由软件中多次实现,包括JacORB和GNU/Classpath实现(好吧,现在OpenJDK也是免费的)。
答案 1 :(得分:4)
虽然最初CORBA可能被认为提供了今天提供的Web服务,但我认为我同意,对于这个应用程序来说,CORBA似乎“丢失了”。
然而,作为一种支持多种平台(嵌入式)的RPC技术,可以很好地从本机(C ++)进行测试,并且可以用来实现性能相当的数据传输场景,我认为CORBA仍然有一个重要的利基。它与“网络”无关。
直接引用问题:我喜欢认为CORBA“丢失”,因为与WebServices不同,它不是针对当今使用的Web - 如:通过端口80隧道化所有内容,运行应用程序60浏览器中的%和网络服务器中的40%等。
答案 2 :(得分:1)
我不认为说网络服务在市场上赢了很多。 CORBA充其量只是一个利基,而且很小。
网络服务:
CORBA:
答案 3 :(得分:0)
CORBA主要因为两件事而失败:
1)缺乏良好的开发/测试工具或IDE插件 2)再次参见(1)