我希望能够使用CORBA功能之一,即我希望我的CORBA客户端在CORBA服务器上执行函数,将参数传递给函数并接收函数的返回值。 但是,我想使用不同的协议,更简单的协议......这样的事情是否存在?
在阅读文档和教程时,我觉得CORBA很重,很难实现和管理。上述功能是否存在于另一个协议中?
编辑:根据目前的答案澄清我的问题,
我还没有实现服务器和客户端。我的客户端需要能够在服务器上执行函数并传递参数并接收返回值。我只是想知道其他协议可以做什么?以更简单的方式?
感谢。
答案 0 :(得分:5)
CORBA客户端与CORBA服务交谈 - 您希望他们如何说出其他内容?
您想使用哪种CORBA功能?
您是否已拥有此客户端和服务器,或者您只是在考虑如何实施它们?
一旦你拥有IDL,我不明白为什么实施是那么困难。您将使用工具来帮助完成其余工作。无论协议如何,管理都会很困难。你在想什么会更简单?
我会考虑放弃CORBA以获得基于HTTP的协议。 CORBA实际上已经消失了 - 简单而公开的胜利。基于HTTP的服务可以使用您选择的语言(Java,C#或其他语言)实现,并且可以与任何可以建立HTTP连接的客户端进行通信。如果你还处于设计阶段,这是值得的。
答案 1 :(得分:-1)
这个话题很老,但我会试着给我两分钱。
CORBA是用于开发分布式对象计算中间件的标准中间件架构。因此,对象是系统的基元。在高级视图中,客户端调用位于另一台计算机,服务器上的对象上的方法,并获取结果,就像该对象位于客户端本身一样。换句话说,这是一种做RPC的方法。
从低级别的角度来看,当在客户端上调用方法时,它会将所有参数以及将用于标识服务器上的对象的许多其他字段放在消息上。此消息将发送到服务器,服务器读取消息并调用指定对象上的方法。方法结果将被发送到发送回客户端的消息。
使用CORBA的GIOP协议(消息格式)可以做什么,也可以使用HTTP协议使用RESTful方法完成。类似地,您可以创建一个客户端,将所有方法参数放在HTTP POST消息(或GET消息,具体取决于您打算做什么)上,将该消息发送到HTTP服务器,该服务器将消息传递给服务,评估您的请求并返回一个封装在HTTP响应上的响应,然后发送回客户端。
虽然分布式对象和RESTful服务之间存在概念上的差异,但两者都做同样的事情:客户端 - 服务器通信。两者之间的区别在于沟通如何完成。 CORBA使用IDL(接口描述语言的简称)。此IDL描述了对象接口,其中包括所有可用的方法,作为参数传递的数据类型或作为响应返回的数据类型以及其他内容。然后,此IDL用于生成可以与代码一起编译的Stub。这些存根处理所有令人讨厌的消息序列化和通信代码。
然而,RESTful服务不使用IDL。因为HTTP是一个简单的协议,所以有许多开源的http客户端库可用于封装消息参数并调用RESTful服务,适用于许多不同的语言(Java,C ++,C#,Python,Ruby,Lua,Erlang, Haskell,Scheme,...)
基于IDL的方法的缺点是,每次对象界面发生变化时,必须为所有客户端重新生成Stub,如果执行此操作太多,这可能会令人头疼。这种方法声称的优点是您可以对消息进行基于编译器的静态检查。
关于替代方案,目前还有许多其他RPC风格的通信协议。 SOAP是一个非常着名的替代品,许多人更喜欢使用它而不是CORBA。其他开源RPC协议包括Google的Protocol Buffers,Apache Thrift,Apache Avro和Message Pack。
那么,您应该学习很多关于RPC和分布式系统的知识,以便更深入地了解这些主题。我希望我能够解释一下。