这个话题很老,但我会尽力给我两分钱。
CORBA 是用于开发分布式对象计算中间件的标准中间件架构。因此,对象是系统的原语。在高级视图中,客户端调用位于另一台计算机(服务器)上的对象上的方法,并获得结果,就好像该对象位于客户端本身上一样。换句话说,它是一种执行 RPC 的方法。
从底层的角度来看,当在客户端调用方法时,它会将所有参数以及许多其他字段放在消息上,这些字段将用于识别服务器上的对象。这条消息被发送到服务器,服务器读取消息并调用指定对象的方法。方法结果被放置在发送回客户端的消息中。
使用 CORBA 的 GIOP 协议(消息格式)可以完成的工作,也可以使用 HTTP 协议使用 RESTful 方法完成。同样,您可以创建一个客户端,将所有方法参数放在 HTTP POST 消息(或 GET 消息,具体取决于您打算做什么)上,将该消息发送到 HTTP 服务器,该服务器将消息传递给服务,该服务评估您的请求并返回一个响应,该响应封装在 HTTP 响应中,然后发送回客户端。
尽管分布式对象和 RESTful 服务之间存在概念上的差异,但两者都做同样的事情:客户端-服务器通信。两者之间的区别在于通信是如何完成的。CORBA 使用 IDL(接口描述语言的缩写)。此 IDL 描述了对象接口,包括所有可用的方法、作为参数传递或作为响应返回的数据类型和其他内容。然后使用此 IDL 生成可以与您的代码一起编译的存根。这些存根处理所有讨厌的消息序列化和通信代码。
然而,RESTful 服务不使用 IDL。因为 HTTP 是一个简单的协议,所以有大量的开源 http 客户端库可用于封装消息参数和调用 RESTful 服务,适用于许多不同的语言(Java、C++、C#、Python、Ruby、Lua、Erlang、哈斯克尔,计划,...)
基于 IDL 的方法的缺点是,每次对象接口更改时,您都必须为所有客户端重新生成 Stub,如果这样做太多,可能会令人头疼。这种方法声称的优点是您可以对消息进行基于编译器的静态检查。
关于替代方案,如今还有许多其他 RPC 风格的通信协议。SOAP 是一个非常著名的替代方案,与 CORBA 相比,许多人更喜欢使用它。其他开源 RPC 协议包括 Google 的 Protocol Buffers、Apache Thrift、Apache Avro 和 Message Pack。
好吧,你应该学习很多关于 RPC 和分布式系统的知识,以便对这些主题有更多的了解。我希望我能有所启发。