打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于Hessian的C++客户端与java服务端通信
  之前一篇文章里提到了通过扩展hessian的java客户端源码来实现client与server通信过程中的session机制。
    这样一来,使用hessian做java客户端的确没有太多问题了,也意味着android版本在通信方面问题解决了;随之而来的是iOS版本,大家都知道,iphone开发所使用的语言是Object-C,但实质是C++,所以我的项目中,首先还要保证Hessian的C++版本能够与服务端正常通信,于是用C++版本的client api做简单的测试后发现,C++版本调用服务端后,对于复杂数据结构情况,C++程序将其解包成一个Hessian的C++版本封装好的Map结构,也就是说,自定义类型的数据结构均以Map的形态在C++中存在,这与我最初的RPC设想还是有差别的,如果客户端的开发人员使用Map进行逻辑开发,就以为着,当接口传输结构需要修改的时候,需要client开发人员对源代码进行反复修改,且容易将一些bug隐藏。

     既然问题已经明确,那随之而来的就是寻求解决方案了,C++版本之所以不支持自定义对象结构在client的逻辑开发中使用,一个最主要的原因是因为C++不像java那样有反射机制(当然Objective-C中可能存在,但我们还是需要C++版本)。最终我的解决方案是:
1、当服务定义逻辑接口以及接口中所使用的参数及返回值后,使用ant进行编译;
2、ant编译的过程中,调用已经为C++写好的模板(velocity或freemarker等)生成C++接口及传输类的代码;
3、将新的C++代码上传版本控制器;
4、客户端更新版本后可使用。
这样,C++客户端也有了真正意义的如同本地调用一样的RPC,且支持复杂对象结构的使用。

当然以上的改造对C++版本的hessian客户端源码进行了几行的修改,大部分工作已扩展为主。

以上只说明了方案,未将C++代码贴出,C++部分为公司其他人开发。在这里我只希望对有相同需求的朋友提供一个已经被验证过的解决方案,如果谁有更好的解决方式欢迎指教。


(###)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
HSF的原理分析
gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
Rich Client技术简介
分布式调用框架与远程过程调用(rpc)
Java远程通讯可选技术及原理
以代码实例讲解SomeIP的开发过程——SomeIP如何应用于面向服务架构SOA架构开发(三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服