1. What is RCF?
RCF
(Remote Call Framework,远程调用框架)是一个面向C++的跨平台进程间通信框架。
与其他通信框架不同,RCF不使用单独的IDL(Interface Definition Language,接口定义语言)。RCF接口是在C++中直接定义的,用户定义数据类型的序列化也是在C++中实现的。代替一个单独的IDL编译器工具,RCF使用C++编译器生成client
和server
存根。
RCF提供了广泛的进程间通信特性:
- Oneway和twoway消息传递。
- Batched oneway消息传递。
- 发布/订阅(Publish/subscribe)风格的消息传递。
- 通过UDP多播(Multicast)和广播(Broadcast)消息传递。
- 异步远程调用(Asynchronous remote calls)。
- Server-to-client回调连接。
- 多种传输方式(TCP、UDP、Windows命名管道和UNIX本地域套接字)。
- 通过HTTP和HTTPS进行tunnel。
- 压缩(zlib)和加密(Kerberos、NTLM、Schannel和OpenSSL)。
- 支持IPv6。
- 内置序列化框架。
- 内置文件传输功能。
- 健壮的版本支持。
- 支持Boost.Serialization。
- 支持Protocol Buffers。
- 支持JSON-RPC。
- 可移植性,适用于多种编译器、平台和操作系统。
- 可伸缩性,适用于广泛的应用程序,从简单的parent-child IPC,到大型分布式系统。
- 效率,在服务器和客户机上的关键路径上实现零拷贝(zero-copy)、零堆分配(zero-heap allocation)。
- 没有依赖,除了Boost头文件(1.35.0或更高版本)。zlib和OpenSSL是可选的。
要开始学习RCF编程,请直接进入教程。
2. Why should I use RCF?
如果您正在编写需要某种形式的进程间通信的C++组件,那么应该考虑使用RCF。对于原生C++组件之间的通信,使用XML和XML模式来描述消息几乎没有什么好处,因为原生序列化格式更具描述性和搞笑性。单独编译IDL文件也没有什么好处。RCF在C++代码中描述接口的方法使构建更简单,开发更灵活。
RCF是用100%标准C++编写的,既可移植又高效。基于RCF的通信层为您提供了跨多种编译器、操作系统和平台的可移植性,以及从多种传输机制、线程模型和消息传递范例中进行选择的能力。
RCF已经被设计为实用应用程序的一个实用工具。自2006年以来,RCF一直在大规模的商业应用中,今天它为世界各地的网络应用提供了动力。RCF所使用的一些场景包括:
- 跨LAN或WAN的Client-server系统。从工业过程控制,到取代分布式桌面应用中的DCOM,再到跨平台通信。
- 后端服务器组件,通常在一个同构LAN环境中。
- 在Windows服务和它们的监视应用程序之间通信。
- Parent-child进程通信。
- 通用本地IPC,取代COM。