RPC通信框架——RCF介绍
现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方。那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口。
在对大量框架进行调研后,决定使用RCF替换COM接口。
RPC通信框架
为什么选择RCF
经过各项对比,认为:
- RCF的使用方式与现有的COM接口方式非常类似,在开发上可以更快速、更容易的替换COM,并且可以少犯错误;
- 从稳定性上来说,RCF从2008年发布的第一个正式版本1.0,到现在的2.01,经历了7个比较重大的版本变化,发展的用户包括”爱立信、惠普“等这样的大公司,在网络上查找RCF相关的介绍,普遍都说不错,是功能比较强大的分布式通信框架,由此可知RCF目前比较稳定,比较成熟;
- RCF基于标准C++,支持Windows、Linux、Unix等操作系统,可以很好的完成跨平台功能;
- RCF支持TCP、UDP、命名管道等通信方式;
- RCF的Server端支持单线程与线程池模式,正好对应COM的两种线程模式;
- 官方文档号称使用了零拷贝、零堆内存分配、Server端缓存等技术,用于提高性能;
- 比较重要的是,虽然官方只有英文文档,但是这份文档非常通俗易懂,即使英文水平比较差,也能在一个晚上或者一个上午的时间内对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杂谈)
总结
经过各项对比后,虽然RCF并不是最强大的框架,可能也不是性能最高的框架,但是在替换COM接口这种需求的情况下,RCF应该是最适合的框架,所以最终选择RCF框架来完成此任务。
RPC通信框架——RCF介绍的更多相关文章
- RPC通信框架——RCF介绍
现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. ...
- RPC通信框架——RCF介绍(替换COM)
阅读目录 RPC通信框架 为什么选择RCF 简单的性能测试 参考资料 总结 现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实 ...
- 【Java】分布式RPC通信框架Apache Thrift 使用总结
简介 Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于th ...
- SpringBoot2+Netty打造通俗简版RPC通信框架(升级版)
背景 上篇文章我简单的介绍了自己打造的通俗简版RPC通信框架,这篇是对简版的增强~ 如果大家对此项目还感兴趣的话,可到码云上瞄瞄:Netty-RPC 上 ...
- SpringBoot2+Netty打造通俗简版RPC通信框架
2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...
- NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成
本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博文了,最近忙着两件事; 一:阅读刘墉先生的<说话的魅力>,以一种微妙的,你我大家都会经常遇见 ...
- lms微服务的rpc通信框架
RPC的概念 RPC 全称 Remote Procedure Call--远程过程调用.是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明.简单的说,RPC就是从一台机器(客户端) ...
- 高性能优秀的服务框架-dubbo介绍
先来了解一下这些年架构的变化,下面的故事是我编的.... "传统架构":很多年前,刚学完JavaWeb开发的我凭借一人之力就开发了一个网站,网站 所有的功能和应用都集中在一起,方便 ...
- Spark1.6之后为何使用Netty通信框架替代Akka
解决方案: 一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点. 但是时代和技术都在演化,从Spark1.3.1版本开始,为 ...
随机推荐
- Angular——基本使用
基本介绍 1.AngularJS是一个框架(诸多类库的集合)以数据和逻辑做为驱动(核心). 2.AngularJS有着诸多特性,最为核心的是:模块化.双向数据绑定.语义化标签.依赖注入等. 模块化 使 ...
- Lazarus 1.44升级到1.6 UTF8处理发生变化了
首先这里真的要强调一下,由于Freepascal升级到3.0后,FPC的内部将整个代码处理由AnsiString改为了UTF8编码(RTL with default codepage UTF-8). ...
- GatewayWorker + LayIM实现即时聊天
一.程序目录结构 二.代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1.前端代码 <!DOCTYPE html> ...
- dva相关文档
https://dvajs.com/guide/getting-started.html#%E5%AE%9A%E4%B9%89-model-------dva.js https://dvajs.com ...
- GeckoWebBrowser设置cookie
var uri = new Uri("http://www.aa.com"); //often cookies are stored on domain level, so &qu ...
- CAD对象的夹点被编辑完成后调用事件(com接口VB语言)
主要用到函数说明: _DMxDrawXEvents::ObjectGripEdit 对象的夹点被编辑完成后,会调用该事件,详细说明如下: 参数 说明 LONGLONG lId 对象的id LONG i ...
- node版本管理工具nvm安装使用教程
一些安装包依赖一定的node版本,可以采用nvm管理node, 可以快速的进行版本切换. 操作系统: windows10, x64 常见版本工具: 1. nvmw, nvmm install node ...
- Bequeath Connection and SYS Logon
The following example illustrates how to use the internal_logon and SYSDBA arguments to specify the ...
- C#学习笔记_14_接口&命名空间
14_接口&命名空间 接口 一系列规范 语法: 如果一个类的后面既有父类也有接口,那么一定是父类在前,接口靠后 一个类可以实现多个接口 规范:接口命名以大写字母 I 开头 接口中可以包含接口方 ...
- camera placement (paraview)
# 'renderView1' is the view name# current camera placement for renderView1 renderView1.CameraPositio ...