0

我希望能够使用 CORBA 功能之一,即我希望我的 CORBA 客户端在 CORBA 服务器上执行一个函数,将参数传递给函数并接收函数的返回值。但是,我想使用不同的协议,一个更简单的协议……这样的事情存在吗?

在浏览文档和教程时,我觉得 CORBA 很重,难以实现和管理。

那么上述功能是否存在于另一个协议中?

编辑:为了根据当前答案澄清我的问题,
我仍然没有实现服务器和客户端。我的客户端需要能够在服务器上执行函数并传递参数和接收返回值。我只是想知道还有什么其他协议可以做到这一点?以更简单的方式?谢谢。

4

2 回答 2

5

一个 CORBA 客户与一个 CORBA 服务对话——你希望他们怎么讲其他的东西?

您想使用什么 CORBA 功能?

您是否已经拥有此客户端和服务器,或者您只是在考虑如何实现它们?

一旦你有了 IDL,我不明白为什么实施如此困难。您将使用工具来帮助完成其余的工作。无论协议如何,管理都会很困难。你想象什么会更简单?

我会考虑为基于 HTTP 的协议放弃 CORBA。CORBA 几乎消失是有原因的——简单而公开的胜利。基于 HTTP 的服务可以用您选择的语言(Java、C# 或其他语言)实现,并且可以与任何可以建立 HTTP 连接的客户端进行通信。如果您仍处于设计阶段,这是值得的。

于 2012-04-26T02:16:49.843 回答
-1

这个话题很老,但我会尽力给我两分钱。

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 和分布式系统的知识,以便对这些主题有更多的了解。我希望我能有所启发。

于 2013-06-18T09:54:11.267 回答