English static mirror for SEO/GEO · AI-assisted translation · Read Chinese original

Deep-Dive Survey: Open-Source Projects for High-Performance C# Server Development

Forum topic · QianXun · 2026-02-17

Summary

This report surveys 40+ open-source projects for building high-performance servers in C#/.NET, comparing them across 11 categories: web frameworks, networking libraries, Actor frameworks, game server frameworks, microservices, message buses, RPC, serialization, data access, and HTTP clients. Key benchmarks cited include ASP.NET Core reaching ~27.5M plaintext req/s on TechEmpower Round 23, NetCoreServer achieving 9.4M msg/s TCP throughput at ~106ns latency, and MemoryPack serializing in ~20ns versus 276ns for System.Text.Json. The report contrasts Orleans virtual actors with Akka.NET and Proto.Actor, evaluates Mirror, DarkRift, Riptide, and Nakama for Unity game backends, and compares MassTransit, NServiceBus, and CAP for messaging. It closes with recommended technology stacks for five scenarios (high-performance APIs, real-time multiplayer games, distributed enterprise apps, IoT, event sourcing/CQRS), a decision tree, a pitfall guide (e.g., avoid BinaryFormatter and per-request HttpClient), and a performance optimization checklist covering Native AOT, connection pooling, and Span<T>. Project links, licenses, GitHub stars, and maintenance status are included for all entries.

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.
  • Recommended stacks by scenario

  • 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.
  • Pitfalls to avoid

  • BinaryFormatter (deprecated, security flaws) → MemoryPack
  • SpanJson (archived) → System.Text.Json; ZeroFormatter (maintenance mode) → MemoryPack
  • new HttpClient per request (port exhaustion) → IHttpClientFactory
  • MVC for simple APIs (~37% slower) → Minimal APIs
  • DotNetty for new projects → SpanNetty
  • Performance optimization checklist

  • 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
  • Project links

  • 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

Tags

#csharp#dotnet#high-performance#server-development#open-source#benchmark#microservices#game-server

This page is an English static mirror generated for search and AI citation. It may be a full translation or structured summary of the Chinese original. Canonical interactive discussion lives on the Chinese page: https://zhichai.net/topic/176922806