传统的远程调用,需要编写IDL,生成客户端和服务器端的桩函数,使用起来不是很容易。效率没有体验过,不知道
是否高效。
采用starcore提供的远程调用接口,可以非常简单的实现远程调用,而且服务器,客户端分别可以采用c/c++,lua,python
语言。效率很高,支持大数据量的传输。
服务器端创建一个类,并定义函数,采用c代码如下:
AtomicClass = SRPInterface ->CreateAtomicObjectSimple("BasicItem","TestClass",NULL,&ErrorInfo);
RemoteRead_AtomicFunction = SRPInterface ->CreateAtomicFunctionSimple(AtomicClass,"RemoteRead","VS_PARAPKGPTR RemoteRead(VS_ULONG Handle);",&ErrorInfo);
VS_PARAPKGPTR RemoteRead(VS_ULONG Handle)为可远程调用的函数,返回一个参数包给客户端。
参数包可以携带二进制数据。
客户端采用lua调用,代码如下:
RetCode,RetValue = Service.FileObject:_SRemoteCall(0,0,"RemoteRead",Handle)
RetValue为服务器端返回的参数包。
实现非常简单,不需要编写任何的IDL。数据传输效率也很高
完整的例子可参见:http://www.srplab.com/data/hadoop_simple_cloudservice.rar
本文介绍了一种基于StarCore的高效远程调用方法,该方法简化了传统远程调用中复杂的IDL编写过程,允许使用多种语言如C/C++、Lua、Python进行服务器端和客户端的开发。文中通过具体的代码示例展示了如何快速搭建远程调用的服务,并指出其在数据传输方面的高性能表现。
677

被折叠的 条评论
为什么被折叠?



