最近我一直在研究SOA。CORBA不就是与SOA完全相同的东西吗?
除了已经提到的事实,即SOA是一种架构,而CORBA是一种特定的实现。
CORBA并没有实现SOA
主要区别在于,CORBA是面向对象或组件的,而SOA是面向服务的。
在我看来,主要的技术差异是,在SOA中你传递消息(或数据对象),而在CORBA中你可以传递通用对象(可以有方法)。因此,尽管你可以使用CORBA来实现SOA(通过限制自己使用部分功能),但标准的CORBA使用方式不是面向服务的。
SOA作为一个概念已经存在多年,但是直到最近才被正式命名。有许多技术可以说是实现SOA的 - 完全或部分地。CORBA可以说是其中之一,尽管在创建CORBA时该术语并不存在。
CORBA确实实现了SOA表面积的很大一部分,但我不认为你可以说它完全实现了(无论这意味着什么)。SOA可能有点模糊。
它们本质上不同,因为一个依赖于技术(CORBA),而另一个则不依赖。
我和你一样也有同样的疑问,因为SOA的定义太广泛了,我可以看到CORBA的许多概念可以自然地映射到SOA的术语中。例如,在CORBA中,客户端(对象)通过网络上的通信协议要求服务器(也是对象)执行某些工作。此外,CORBA实现提供通用服务,如日志记录和事件支持。我认为this link总结了CORBA和SOA之间的关系:
过去,许多人接触到的第一个面向服务的架构是基于CORBA规范的对象请求代理(ORBs)。CORBA规范真正提高了人们对面向服务架构的认识。