现有的软件中用了大量的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框架来完成此任务。

http://www.cnblogs.com/hbccdf/p/RCF_introduce.html

RPC通信框架——RCF介绍(替换COM)的更多相关文章

  1. RPC通信框架——RCF介绍

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

  2. RPC通信框架——RCF介绍

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

  3. 【Java】分布式RPC通信框架Apache Thrift 使用总结

    简介 Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于th ...

  4. SpringBoot2+Netty打造通俗简版RPC通信框架(升级版)

    背景         上篇文章我简单的介绍了自己打造的通俗简版RPC通信框架,这篇是对简版的增强~         如果大家对此项目还感兴趣的话,可到码云上瞄瞄:Netty-RPC         上 ...

  5. SpringBoot2+Netty打造通俗简版RPC通信框架

    2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...

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

    本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博文了,最近忙着两件事;    一:阅读刘墉先生的<说话的魅力>,以一种微妙的,你我大家都会经常遇见 ...

  7. lms微服务的rpc通信框架

    RPC的概念 RPC 全称 Remote Procedure Call--远程过程调用.是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明.简单的说,RPC就是从一台机器(客户端) ...

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

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

  9. Spark1.6之后为何使用Netty通信框架替代Akka

    解决方案: 一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点. 但是时代和技术都在演化,从Spark1.3.1版本开始,为 ...

随机推荐

  1. js动画学习(四)

    七.多属性封装函数 前面分别介绍了单独改变单一属性值得动画,从本节起开始介绍多属性封装函数,一个函数搞定多种属性值的改变. 首先介绍一个很重要的函数getStyle(),这个函数返回一个元素的当前属性 ...

  2. 纯CSS写九宫格样式,高宽自适应正方形

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  3. SharePoint Secure Store Service(SSSS)的使用(一)

    SSS在案例中的应用: SSS介绍 SSS部署 SSS应用 http://www.cnblogs.com/renzh/archive/2013/03/31/2990280.html 创建.部署.应用S ...

  4. iOS开发 点击跳转到App Store 或者 点击按钮去评价

    //跳转到应用页面 NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d" ...

  5. 「OC」 多态

    一.基本概念 多态在代码中的体现,即为某一类事物的多种形态,OC对象具有多态性.必须要有继承,没有继承就没有多态. 在使用多态时,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指 ...

  6. 「OC」 继承

    一.基本用法 1.设计两个类Bird.Dog 1 // Bird的声明 2 @interface Bird : NSObject 3 { 4 @public 5 int weight; 6 } 7 - ...

  7. Joel在耶鲁大学的演讲

    Joel Spolsky是一个美国的软件工程师,他的网络日志"Joel谈软件"(Joel on Software)非常有名,读者人数可以排进全世界前100名. 上个月28号,他回到 ...

  8. C# Thread Programming Start

    引言 1.理解多线程 2. 线程异步与线程同步 3.创建多线程应用程序 3.1通过System.Threading命名空间的类构建 3.1.1异步调用线程 3.1.2并发问题 3.1.3线程同步 3. ...

  9. jQuery + svg/vml

    流程设计器jQuery + svg/vml(Demo7 - 设计器与引擎及表单一起应用例子)   去年就完成了流程设计器及流程引擎的开发,本想着把流程设计器好好整理一下,形成一个一步一步的开发案例,结 ...

  10. 转: seajs知识点与cmd规范

    在比较之前,我们得先来了解下什么是AMD规范?什么是CMD规范?当然先申明一下,我个人也是总结下而已,也是网上看到的资料,自己总结下或者可以说整理下而已,供大家更深入的了解!因为我们都知道 AMD规范 ...