[发明专利]一种基于远程过程调用的双向通信系统有效
申请号: | 201410765542.8 | 申请日: | 2014-12-11 |
公开(公告)号: | CN104486330A | 公开(公告)日: | 2015-04-01 |
发明(设计)人: | 伍星宇 | 申请(专利权)人: | 上海爱数软件有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 上海科盛知识产权代理有限公司 31225 | 代理人: | 赵志远 |
地址: | 201112 上海市闵行*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 远程 过程 调用 双向通信 系统 | ||
技术领域
本发明涉及一种双向通信系统,尤其是涉及一种基于远程过程调用的双向通信系统。
背景技术
thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它是一种跨语言的服务部署框架,最初由Fackbook于2007年开发,2008年进入Apache开源项目,Thrift通过一个中间语言(IDL,接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(支持C++,java,Python,PHP,Ruby,C#,Cocoa等),并由生成的代码负责RPC协议层和传输层的实现。
Thrift框架能够为我们简化TCP通讯,可以使我们能够快捷的简历各种语言的客户端和服务端,并实现客户端对服务端的远程过程调用,简单的说,就是服务器通过thrift架构对外开放一些接口,并自己实现这些接口,如操作文件,操作图片,文件下载等等,然后客户端通过thrift架构生成的接口,去简单的调用它,我们不需要关心服务端实现的方式,我们只关注它对外提供的接口。
对于thrift的使用者来说,我们关心的是接口,或者说方法签名,而不需要太过关心数据,因为数据本身在传递的过程中就应该被保护起来,用面向对象的说法就是封装起来,不对外公开,这可以大大保证数据的安全性,使用thrift架构,我们不需要对数据结构进行破坏,在之前的10几年,我们在进行数据通讯时,最常见的作法就是使用类型标识符来区别各个数据的作用,如1表示文件上业务,2表示文件下载业务,其实这样做了之后我们的数据结构是混乱的,而有了thrift之后,我们的数据实现是独立的,是职责分明的,当然也是受保护的,即文件上传与文件下载的数据是相互独立的。
不过,Thrift采用的是C/S模型,不支持双向通信,client只能远程调用server端的RPC接口,到client端则没有RPC供server端调用,这意味着,client端能够主动与server端通信,但server端不能主动与client端通信而只能被动的对client端的请求做出应答,这种RPC模式在某些应用中存在缺陷,比如,有些应用,大部分情况下,client端会主动向server端发请求或者向server端发送数据,而在少部分情况下,server端也需要主动向client发送一些命令,告知进行某些操作。
解决这个问题通常有两种方法,一种是轮询模式,即client周期性的问server端是否需要进行某些操作,但是这种方法延迟大,且会浪费大量资源,造成不必要的访问开销。另一种方式是双client、server的方式,即通信双方即是client,又是server,在通信双方开启两个通信通道,开启两个端口来进行通信,不过这个开发起来比较繁琐,而且代码看起来会比较晦涩。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于远程过程调用的双向通信系统,通过修改thrift本身来实现双向传输,避免轮询操作和双服务端机制,从而提高通过thrift框架实现双向通信时的开发和运行的效率。
本发明的目的可以通过以下技术方案来实现:
一种基于远程过程调用的双向通信系统,其特征在于,包括:
服务端,该服务端包括:
消息服务客户端创建模块MessageServiceClient,用于创建给客户端发送消息的对象;
消息分发模块MessageDistributor,用于将消息服务客户端创建模块创建的对象放入客户端列表中,并处理各客户端消息的分发;
客户端,该客户端包括:
连接处理模块ConnectionStatusMonitor,用于建立与服务端的连接;
消息监听模块MessageListener,用于服务端消息的监听;
消息接收模块MessageReceiver,用于服务端消息的接收;
消息发送模块MessageSender,用于发送消息给服务器。
对消息服务客户端创建模块创建的每一个对象,均采用同一个消息分发模块进行处理。
所述的消息分发模块将创建的对象放入客户端列表后,将业务需要发送给客户端的消息加入到消息队列中;服务端检测到消息队列中的消息时,消息分发模块轮询客户端列表,向对应的客户端发送消息,从而实现服务端到客户端的传输。
所述的客户端中还包括连接维护模块ConnectionRequiredRunnable,用于维护服务端和客户端的链接。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱数软件有限公司,未经上海爱数软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410765542.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于用户行为的网络内容加速方法
- 下一篇:采用微信识别接入网络的认证方法