asio-grpc
Restbed
asio-grpc | Restbed | |
---|---|---|
4 | 5 | |
325 | 1,885 | |
- | -0.1% | |
9.0 | 0.0 | |
2 days ago | about 1 year ago | |
C++ | C++ | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
asio-grpc
-
Generate gRPC source files using CMake
Since I can never remember what arguments to pass to protobuf_generate to create Protobuf and gRPC source files, I wrote an article about it. It provides a copy-paste-able code snippet along with an explanation of all arguments that protobuf_generate accepts, how to format it nicely using cmake-format and how to make things easier with asio-grpc.
-
Using Asio for asynchronous gRPC clients and servers
Asio-grpc makes exactly that possible by providing an Asio execution_context compatible interface to the CompletionQueue. It supports all types of RPCs (including generic ones), completion tokens, cancellation, as well as libunifex sender/receiver (if you want to try out what might become std::execution). The latest release (v1.7.0) also introduced a GrpcStream class for writing Rust/Golang select-style code.
-
DevBlog #1 - Poseidon
It hasn't been without issue, however. Problems that may lie in official google-maintained libraries are of course present and required design changes, and I was even prompted to write my own bitset library that outperforms the C++ standard's by a factor of 60. Madness. Right?
-
C++20 coroutines for asynchronous gRPC services
Or check out the asio-grpc repository directly if you are looking to write asynchronous gRPC services with the features of Boost.Asio like C++20 coroutines, std::futures, stackless coroutines, callbacks and Boost.Coroutines.
Restbed
-
How to use C++ as the backend for web dev?
Use a rest api library like https://github.com/corvusoft/restbed. You can use a json library with this to serialize/deserialize your data into json objects.
-
What does modern (good) API development look like and what are the best tools to use?
Contrary to the direction most people go, I've been writing REST APIs as C++ servers using two different fairly full featured C++ REST frameworks: first using https://github.com/Corvusoft/restbed and more lately using https://github.com/Stiffstream/restinio. These can be peers with any other server, while living on embedded and/or high compute devices for video encode/decode/analysis, deployed ML models, encryption for and remote process communications, model data collection and similar expensive or in-field processing. In both high compute and in-field-no-internet situations creating REST APIs in C++ enables speed and system controls not present in the majority of the mainstream REST frameworks. It's a big world, and here comes ubiquitous high compute...
-
I'm not sure what to study now ):
There are some C++ API frameworks like Pistache or Restbed (full list here) to get started. If I should be 100% honest, I don't think C++ is worth for APIs as we have easier solutions with the same performance nowadays (like Go and Rust), but I think we should try everything, right?
-
cpprestsdk in maintenance mode
If you need an embedded C++ HTTP server then there are plenty of libraries/frameworks (in random order): Crow, RESTinio, Boost.Beast, cpp-httplib, http_backend, Pistache, RestBed, served, proxygen, Simple-Web-Server, drogon, oat++.
- Rest Api Routes Implementation
What are some alternatives?
gRPC - The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
C++ REST SDK - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
concurrencpp - Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
Pistache - A high-performance REST toolkit written in C++
RESTinio - Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use
Oat++ - 🌱Light and powerful C++ web framework for highly scalable and resource-efficient web application. It's zero-dependency and easy-portable.
lithium - Easy to use C++17 HTTP Server with no compromise on performances. https://matt-42.github.io/lithium
Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11
drachtio-freeswitch-modules - A collection of open-sourced freeswitch modules that I use in various drachtio applications
libunifex - Unified Executors
POCO - The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.