Deep-Dive Survey: Open-Source Projects for High-Performance C# Server Development
This report compares 40+ open-source .NET projects for high-performance server development across 11 categories, with benchmarks, feature matrices, licensing/maintenance status, and scenario-based selection guidance. (Report date: February 2025; based on GitHub stars, official docs, benchmarks, and community feedback.)
Key points
- Web frameworks: ASP.NET Core (.NET 9) leads TechEmpower Round 23 with ~27.5M plaintext req/s and ~2.5M JSON req/s, ~11–17ms cold start. FastEndpoints (~254K req/s in Bombardier tests, REPR pattern) is roughly 13% faster than MVC controllers (~225K req/s). Carter offers Nancy-style Minimal API extensions.
- Networking libraries: NetCoreServer achieves 9.4M msg/s TCP throughput at ~106ns latency with full C10K support. SuperSocket offers flexible pipeline architecture; SpanNetty provides zero-copy Netty-style APIs; DotNetty is in low maintenance.
- Actor frameworks: Proto.Actor shows highest message throughput and fastest activation (Etteplan 2022 benchmark) plus cross-language support (Go/Java); Orleans offers the best memory efficiency, built-in distribution/persistence, and virtual actors; Akka.NET provides full classic Actor semantics with Streams and Persistence.
- Game servers: Mirror is the top Unity networking library; DarkRift offers dual TCP+UDP with authoritative server support; Riptide is lightweight with extremely low latency; Nakama is a complete (Go-based) game backend.
- Microservices: Dapr (CNCF-graduated, sidecar, multi-language) for cloud-native; Ocelot for API gateway; Steeltoe for Spring integration; Service Fabric for Azure-bound platforms.
- Message buses: MassTransit is the open-source default (multi-transport, Saga); NServiceBus for enterprise/SLA; CAP uniquely supports distributed transactions; Rebus and EasyNetQ for lightweight needs.
- RPC: gRPC.NET for standard cross-language .proto-based RPC; MagicOnion for code-first C# interfaces with MessagePack and native Unity client support.
- Serialization: MemoryPack is fastest (~20ns serialize/deserialize, no attributes needed); MessagePack IntKey (84ns/73ns) and Protobuf.NET (176ns/266ns) for cross-language; System.Text.Json (276ns/420ns) is built in; Newtonsoft.Json is slowest (1,433ns/2,783ns).
- Data access: Dapper (17.5k stars) is the fastest micro-ORM (1.166ms single query, 13KB memory); EF Core 9 for full-featured ORM with migrations; RepoDb for bulk operations (~20ms for 10k inserts); Linq2Db for high-performance LINQ.
- HTTP clients: Refit is fastest (265μs) and type-safe; Flurl (283μs) has the friendliest API; RestSharp (320μs) most flexible; raw HttpClient has lowest allocations (314KB). YARP for reverse proxying.
- High-performance Web API / microservices: FastEndpoints or Minimal APIs, MemoryPack (internal) / MessagePack (cross-service), Dapper (reads) + EF Core (writes), gRPC.NET, MassTransit, Refit.
- Real-time multiplayer game server: Mirror (Unity) or NetCoreServer (standalone), MemoryPack, Dapper, Orleans for state, StackExchange.Redis.
- Distributed enterprise app: ASP.NET Core, Orleans, NServiceBus or CAP, EF Core, Ocelot/YARP gateway, Dapr.
- IoT / high-concurrency: ASP.NET Core + SignalR, NetCoreServer, Proto.Actor or Akka.NET, MassTransit + Kafka, MemoryPack, TimescaleDB + Dapper.
- Event sourcing / CQRS: ASP.NET Core, Akka.NET, Marten or KurrentDB event store, MassTransit, Dapper + PostgreSQL read models, MessagePack.
- BinaryFormatter (deprecated, security flaws) → MemoryPack
- SpanJson (archived) → System.Text.Json; ZeroFormatter (maintenance mode) → MemoryPack
new HttpClientper request (port exhaustion) → IHttpClientFactory- MVC for simple APIs (~37% slower) → Minimal APIs
- DotNetty for new projects → SpanNetty
- Use Native AOT (.NET 8+); enable connection pooling and reuse
AsNoTracking()for read-only queries; compiled queries- High-performance serializers (MemoryPack/MessagePack)
Span<T>/Memory<T>to reduce allocations;PooledConnectionLifetime- Response compression; benchmark with BenchmarkDotNet; monitor GC/allocations
- ASP.NET Core: https://github.com/dotnet/aspnetcore · Orleans: https://github.com/dotnet/orleans · YARP: https://github.com/dotnet/yarp
- NetCoreServer: https://github.com/chronoxor/NetCoreServer · SuperSocket: https://github.com/kerryjiang/SuperSocket · DotNetty: https://github.com/Azure/DotNetty
- Akka.NET: https://github.com/akkadotnet/akka.net · Proto.Actor: https://github.com/asynkron/protoactor-dotnet
- Mirror: https://github.com/MirrorNetworking/Mirror · DarkRift: https://github.com/DarkRiftNetworking/DarkRift · Riptide: https://github.com/RiptideNetworking/Riptide · Nakama: https://github.com/heroiclabs/nakama
- Dapr: https://github.com/dapr/dotnet-sdk · MassTransit: https://github.com/MassTransit/MassTransit · NServiceBus: https://github.com/Particular/NServiceBus · CAP: https://github.com/dotnetcore/CAP · Ocelot: https://github.com/ThreeMammals/Ocelot
- MagicOnion: https://github.com/Cysharp/MagicOnion · MemoryPack: https://github.com/Cysharp/MemoryPack · MessagePack: https://github.com/MessagePack-CSharp/MessagePack-CSharp · gRPC.NET: https://github.com/grpc/grpc-dotnet
- Dapper: https://github.com/DapperLib/Dapper · EF Core: https://github.com/dotnet/efcore · RepoDb: https://github.com/mikependon/RepoDB · Linq2Db: https://github.com/linq2db/linq2db
- FastEndpoints: https://github.com/FastEndpoints/FastEndpoints · Carter: https://github.com/CarterCommunity/Carter
- Refit: https://github.com/reactiveui/refit · Flurl: https://github.com/tmenier/Flurl · RestSharp: https://github.com/restsharp/RestSharp