Remote Call Framework (RCF) is a cross-platform interprocess communication framework for C++.
Unlike other communication frameworks, RCF doesn't use a separate IDL (Interface Definition Language). RCF interfaces are defined directly in C++, and serialization for user-defined data types likewise is implemented in C++. Instead of a separate IDL compiler tool, RCF uses the C++ compiler to generate client and server stubs.
RCF provides a broad range of interprocess communication features:
To start learning about programming with RCF, go straight to the Tutorial.
You should consider using RCF if you are writing C++ components that need some form of interprocess communication. For communication between native C++ components, there is little benefit in using XML and XML schemas to describe messages, as native serialization formats are more descriptive and efficient. There are also few benefits to separately compiled IDL files. RCF's approach of describing interfaces in C++ code makes for a simpler build and more flexible development.
RCF is written in 100% standard C++, and is both portable and efficient. Basing your communication layer on RCF gives you portability across a wide range of compilers, operating systems, and platforms, and the ability to pick and choose from a wide range of transport mechanisms, threading models, and messaging paradigms.
RCF has been designed as a real world tool for real world applications. RCF has been in large-scale commercial use since 2007, and today powers networked applications around the globe. Some of the scenarios RCF has been used in include:
RCF 3.0 has been modernized to take advantage of the considerable number of language and library features that have made their way into the C++ standard, up to and including the C++20 standard.
RCF no longer has a dependency on the Boost library. All usages of Boost classes and functions, such as
boost::bind(), have been replaced with standard C++ counterparts.
A consequence of this is that RCF will no longer build on older C++ compilers. A list of supported compilers is included in the section on Building RCF. Users who are unable to upgrade to a supported compiler will need to continue using RCF 2.2 .
For version 3.0, we have also overhauled all the documentation, and added reference documentation for public RCF classes.
For a detailed list of changes, see the Release Notes.