现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方。那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口。

在对大量框架进行调研后,决定使用RCF替换COM接口。

RPC通信框架

  1. CORBA
  2. ICE
  3. Thrift
  4. zeromq
  5. dbus
  6. RCF
  7. YAMI4
  8. TAO

为什么选择RCF

经过各项对比,认为:

  1. RCF的使用方式与现有的COM接口方式非常类似,在开发上可以更快速、更容易的替换COM,并且可以少犯错误;
  2. 从稳定性上来说,RCF从2008年发布的第一个正式版本1.0,到现在的2.01,经历了7个比较重大的版本变化,发展的用户包括”爱立信、惠普“等这样的大公司,在网络上查找RCF相关的介绍,普遍都说不错,是功能比较强大的分布式通信框架,由此可知RCF目前比较稳定,比较成熟;
  3. RCF基于标准C++,支持Windows、Linux、Unix等操作系统,可以很好的完成跨平台功能;
  4. RCF支持TCP、UDP、命名管道等通信方式;
  5. RCF的Server端支持单线程与线程池模式,正好对应COM的两种线程模式;
  6. 官方文档号称使用了零拷贝、零堆内存分配、Server端缓存等技术,用于提高性能;
  7. 比较重要的是,虽然官方只有英文文档,但是这份文档非常通俗易懂,即使英文水平比较差,也能在一个晚上或者一个上午的时间内对RCF整体的使用、包含的功能、支持的协议等有比较详细的了解,这对于后续的快速了解和快速开发并替换COM,有着至关重要的作用;

简单的性能测试

在我的笔记本 Windows7 专业版 SP1 x64 、Intel(R) Core(TM) i5-2450M CPU @ 2.5GHz、 12G内存 的机器上,编写了Demo,对RCF进行了测试。

一个Server程序,一个Client程序,通过TCP进行通信,Client程序中调用Server服务的接口,这个接口实现是一个空方法,用来测试纯接口调用的极限次数,Release x86版测试结果如下:

调用两万次,耗时1647ms左右,平均每秒可以调用12143次,平均每次调用耗时82微妙。

参考资料

求推荐:进程调度库、进程间通信库,All 开源,谢谢!-C/C++-ChinaUnix.net

RCF - Interprocess Communication for C++ – CodeProject

分布式通信的几种方式(EJB、RMI、RPC、JMS、web service杂谈)

C/C++ 分布式应用/网格开源软件

现在主流开源分布式系统架构都有哪些?

thrift 入门介绍

Apache Thrift - 可伸缩的跨语言服务开发框架

cross platform IPC

总结

经过各项对比后,虽然RCF并不是最强大的框架,可能也不是性能最高的框架,但是在替换COM接口这种需求的情况下,RCF应该是最适合的框架,所以最终选择RCF框架来完成此任务。

RPC通信框架——RCF介绍相关推荐

  1. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  2. 【Dubbo】深入理解Apache Dubbo(一):带你走近高性能RPC通信框架

    1. 引言 从本篇开始,笔者将会带你进入Apache顶级项目--Dubbo的学习.本篇侧重介绍Dubbo的来龙去脉,会从架构的演进过程说明Dubbo的重要性和意义. 2. 应用架构的演进过程 2.1 ...

  3. spark学习-72-源代码:Endpoint模型介绍(4)-Spark为何使用Netty通信框架替代Akka

    问题导读: spark 如何在1.6.0之后使用Netty替代了Akka? Spark Network Common怎么实现? BlockTransfer 与 Shuffle 之间的联系? Akka ...

  4. 高性能优秀的服务框架-dubbo介绍

    先来了解一下这些年架构的变化,下面的故事是我编的.... "传统架构":很多年前,刚学完JavaWeb开发的我凭借一人之力就开发了一个网站,网站 所有的功能和应用都集中在一起,方便 ...

  5. 美团大规模微服务通信框架及治理体系OCTO核心组件开源

    来源:美团技术团队 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区 微服务通 ...

  6. (一) Nepxion-Thunder分布式RPC集成框架 - 介绍

    Nepxion-Thunder(QQ 群 471164539)发布在https://github.com/Nepxion/ 1. 概要 1.1 Thunder是基于Netty + Hessian + ...

  7. 介绍开源的.net通信框架NetworkComms

    Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地址是:https://github.com/MarcFletcher/ ...

  8. 开源项目推荐:主流RPC开源框架及知识科普

    什么是rpc框架? 先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比 ...

  9. 消息中间件—RocketMQ的RPC通信(二

    作者:胡宗棠 来源:匠心独运的博客 在(一)篇中主要介绍了RocketMQ的协议格式,消息编解码,通信方式(同步/异步/单向).消息发送/接收以及异步回调的主要通信流程.而本篇将主要对RocketMQ ...

最新文章

  1. python线程同步锁_Python实现的多线程同步与互斥锁功能示例
  2. 2018 hncpc 部分题
  3. Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
  4. java barrier_Java并发类CyclicBarrier方法详解
  5. BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)
  6. ambari 修改服务器名,Ambari修改主页面方法
  7. sql数据库备份默认路径_在Linux上SQL Server中更改默认数据库文件和备份路径
  8. 【ExtJs】获取grid选中的records
  9. 解决applet覆盖遮罩层div的问题
  10. java 基础 泛型
  11. 关于Savitzky-Golay滤波器
  12. 新编16 32位微型计算机原理及应用,新编16/32位微型计算机原理及应用(第5版)...
  13. 基于WebRTC开源框架的实时视频聊天项目,搭建私人实时通信服务
  14. 数学建模之综合评价模型(层次分析法+Topsis法+熵权法)
  15. c盘里appdata是什么文件夹?
  16. 世界主要粮食作物和经济作物的生产及其分布
  17. 1、当鼠标移动到目标上的时候,自动显示一个提示框。
  18. 数字化模型是工业PaaS平台的核心
  19. 天基实业个人投资理财选择优质项目最为重要
  20. spotify能免费下歌吗_Spotify免费版与高级版:值得升级吗?

热门文章

  1. 云端服务器部署前端工程
  2. 计算机三个人的英语情景对话,求简单的三人英语情景对话对话 购物的老师要求要三人的英语对话 购物的 每人五句左右就行...
  3. 微信小程序轨迹回放实现及遇到的坑
  4. 什么软件可以支持视频转换成文字?
  5. 美术集网校--常见的水粉调色纯干货分享,记得收藏!
  6. oracle 抽样_利用ORACLE实现数据抽样
  7. Android jPBC 2.0.0配置与测试
  8. 为什么顺丰快递就要比别的快递快,别的快递难道做不到吗?
  9. React路由管理 —— React Router 总结
  10. 星际争霸游戏中的操作心得