This is an asynchronous and event-driven RPC implementation for embeded system with small system footprint. It is targeting at both IOT platforms and mainstream servers with high-throughput and high availability. It features highly easy to use with a versatile skeleton generator, to generate C++, Python, Java or JavaScript skeleton code instantly. Welcome to use!
Here
is an introduction to the concept of rpc-frwmrk
.
Synchronous/asynchronous request handling
Active/passive request canceling.
Server-push events
Keep-alive for time-consuming request.
Simultaneous object access over network and IPC.
Peer online/offline awareness.
Publishing multiple local/remote object services via single network port.
Full-duplex streaming channels
Both OpenSSL and GmSSL support
Websocket support
Object access via Multihop routing
Authentication support with Kerberos 5
Node Redudancy/Load Balance
A collection of skeleton generators for C++, Python Java, and JavaScript
A GUI config tool for rpcrouter
rpcfs - filesystem interface for rpc-frmwrk
- Please refer to this article
How to build rpc-frmwrk
for detail description. - If you are using Ubuntu or Fedora, you may want to install the
deb package or rpm package
to skip the painstaking building process.
- Run
sudo make install
from the root directory ofrpc-frmwrk
source tree. - Configure the runtime parameters for
rpc-frwmrk
as described on this page. - Start the daemon process
rpcrouter -dr 2
on server side, and on start daemon processrpcrouter -dr 1
on client side. And now we are ready to run thehelloworld
program. For more information aboutrpcrouter
, please follow this link. - Smoketest with
HelloWorld
. Start thehwsvrsmk
, thehelloworld
server on server side. And start thehwclismk
on the client side. - This wiki has some detail information.
rpc-frmwrk
can generate skeleton systems for different system architectures.
- The micro-service RPC.
rpc-frmwrk
has aninterface description language
,ridl
to help you to generate the skeleton code in one second. Examples can be found here. The advantage is that you can deploy new services on the fly, as well as shutting down some of them. - The single-app RPC.
ridlc
can also generate skeleton code in the form of the classic client/server program. The advantage is it has much better performance. - Programming with
rpcfs
. Theridlc
can generate a pair of filesystems for server and client respectively with theridl
file. And all therpc
traffic goes through file read/write and other file operations. And moreoverrpcfs
hosted by therpcrouter
provides information for runtime monitoring and management.
This project depends on the following 3rd-party packags at runtime:
dbus-1.0 (dbus-devel)
libjson-cpp (jsoncpp-devel)
lz4 (lz4-devel)
cppunit-1 (for the test cases, cppunit and cppunit-devel)
openssl-1.1 for SSL communication.
(optional)MIT krb5 for authentication and access control.
(optional)c++11 is required, and make sure the GCC is 5.x or higher.
python 3.5+ is required for Python support.
(optional)Java OpenJDK 8 or higher for Java support.
(optional)npm 9.0 and webpack
(optional)FUSE-3 for rpcfs support
(optional)GmSSL 3.0
(optional)
- Please refer to
issues
.