C++Now 2017 has ended
Wednesday, May 17 • 5:20pm - 6:05pm
An easy to use RPC framework implemented in C++11/14

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Feedback form is now closed.

I want to introduce rest_rpc, a new approach to RPC libraries that shows off the power of modern C++.

The compelling value proposition of the rest_rpc framework is its focus on simplifying the calling code. Callers stay focused on business logic and spend no time on networking issues or data packing and unpacking.

We'll start with very short examples of simple, but complete client/server applications that communicate using rest_rpc on both client and server. We'll build on these to show more complicated examples that introduce more advanced, but still easy to use features.

I'll also discuss how I implemented some of the challenges I faced creating a library that is caller friendly, but type-safe at compile time and efficient at runtime. Among these challenges are:
*) How to register callback of any signature (using variadic templates and type erasure)
*) How to verify that RPC parameters are type correct at compile-time instead of just run-time.
*) How to support all types of callers (I use SFINAE, type_traits, variadic templates, and generic lambdas to create a bind that is stronger than Boost.Bind for smart pointers, raw pointers, and function objects)
*) How to hide the details of serialization and networking (utilizing meta data to avoid defining a protocol file)
*) How to route requests to the correct handler (using a metaprogramming trick to transform string arguments to real arguments)

The repository is here: https://github.com/topcpporg/rest_rpc

avatar for Yu Qi

Yu Qi

Technical Director, oneflow
Yu is a C++ programmer with 10 years experience who lives in Zhuhai, Guangdong province, China. He loves modern C++ and has founded an open source community ( http://www.purecpp.org/ ) to promote C++11/14 in China. His focus is distributed systems and he is the author of rest_rpc... Read More →

Wednesday May 17, 2017 5:20pm - 6:05pm MDT
Hudson Commons