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.