userver: Feature Comparison with other Frameworks
Loading...
Searching...
No Matches
Feature Comparison with other Frameworks

If you find info in this table inaccurate, please propose a PR with the fix.

The table below shows features of different high-level asynchronous frameworks. Note that the framework has to provide components well integrated into each other. For example, a framework with "Async PostgreSQL", "Dynamic Config" and "Metrics" has to have metrics for the PostgreSQL driver and dynamic configs to control the driver behavior at runtime. Such framework gets the ✔️ in the table below. If the components have weak integration with each other or require additional work for such integration (the usual case for third-party library), then the framework gets ± mark in the table below. For missing functionality or if we found no info on the functionality we use ❌ and ❓ respectively.

Feature 🐙 userver go-micro 4.7.0 dapr 1.5.3 actix 0.13.0 + tokio 1.19.2 drogon 1.7.5 POCO 1.13.3
Programming model for IO-bound apps stackful coroutines stackful coroutines actors stackless coroutines callbacks / stackless coroutines thread pool
Programming language to use С++ Go-lang Python, JS, .Net, PHP, Java, Go Rust C++ C++
Caching data from remote or DB ✔️ [↗] ❌ ❌ ❌ ❌ ✔️ [↗]
Dynamic Config [1] ✔️ [↗] ✔️ [↗] ❌ ❌ ❌ ❌
Unit testing ✔️ C++ [↗] ✔️ via Go-lang ✔️ PHP [↗] ✔️ ✔️ [↗] ❓
Functional Testing [2] ✔️ [↗] ❌ ❌ [↗] ❌ [↗] ❌ [↗] ❓
Async synchronization primitives ✔️ [↗] ✔️ via Go-lang ❌ forces turn based access ✔️ [↗] ❌ ✔️ [↗]
Dist locks ✔️ ✔️ [↗] ❌ [↗] ± third-party libs ❌ ❓
Async HTTP client ✔️ [↗] ✔️ ✔️ ✔️ ✔️ [↗] ❓
Async HTTP server ✔️ [↗] ✔️ ✔️ ✔️ ✔️ ✔️ [↗]
Async gRPC client ✔️ [↗] ✔️ ✔️ ± third-party libs ❌ ❌
Async gRPC server ✔️ [↗] ✔️ ✔️ ± third-party libs ❌ ❌
Async PostgreSQL ✔️ [↗] ± third-party driver ✔️ [↗] ❌ manual offloading ✔️ [↗] ✔️ [↗]
PostgreSQL pipelining, binary protocol ✔️ [↗] ❌ ❌ ± third-party libs ❌ ❓
Async Redis ✔️ [↗] ± third-party driver ✔️ [↗] ± third-party libs ✔️ [↗] ❓
Async Mongo ✔️ [↗] ± third-party driver ✔️ [↗] ❌ manual offloading ❌ [↗] ❓
Async ClickHouse ✔️ [↗] ± third-party driver ❌ ± third-party libs ❌ [↗] ❓
Async MySQL ✔️ MySQL Driver ± third-party driver ✔️ [↗] ❌ [↗] ✔️ [↗] ✔️ [↗]
Async ODBC ❌ ❓ ❓ ❓ ❓ ✔️ [↗]
Metrics ✔️ [↗] ± third-party driver ✔️ [↗] ❌ ❌ ❓
No args evaluation for disabled logs ✔️ [↗] ❌ ❌ ± third-party libs ❌ ❌
Secrets Management ± [↗] ❓ ✔️ ❓ ❓ ❓
Distributed Tracing ✔️ [↗] ❓ ✔️ [↗] ± third-party libs ❌ ❓
JSON, BSON, YAML ✔️ [↗] ± third-party libs ± third-party libs ± third-party libs ± only JSON ❓
XML ❌ ❓ ❓ ❓ ❓ ✔️ [↗]
Content compression/decompression ✔️ ✔️ ❓ ✔️ ✔️ ✔️ [↗]
Service Discovery ✔️ DNS, DB topology discovery ✔️ [↗] ❓ ❓ ❓ ± [↗] (DNS)
Async TCP/UDP ✔️ [↗] ✔️ ❓ ✔️ [↗] ❌ ✔️ [↗]
Async TLS Socket ✔️ [↗] ✔️ ❓ ± third-party libs ❌ ✔️ [↗]
Async HTTPS client ✔️ [↗] ✔️ ❓ ✔️ ❓ ✔️ [↗]
Async HTTPS server ✔️ [↗] ❓ ❓ ✔️ ❓ ✔️ [↗]
WebSockets Server ✔️ [↗] ± third-party libs ❌ [↗] ± third-party libs ✔️ [↗] ❌
Deadlines and Cancellations ✔️ ❓ ❓ ❓ ± [↗] ❌
Retries and Load Balancing ✔️ ✔️ [↗] ✔️ ❓ ❓ ❌

The table above shows the well-developed functionality of userver. Additionally userver is highly effective which is proven by the results of the Techempower benchmark run. Userver comes ahead of its competitors from the table. [3], see [↗]

top15

[1]: "Dynamic Configs" stands for any out-of-the-box functionality that allows to change behavior of the service without downtime and restart.

[2]: Functional Testing includes DB startup and initialization; mocks for other microservices; testpoints functionality.

[3]: Techempower run № 3c2e9871-9c2a-4ff3-bc31-620f65da4e74.