finds.dev← search

// the find

davidfowl/BedrockFramework

★ 1,133 · C# · MIT · updated Sep 2025

High performance, low level networking APIs for building custom servers and clients.

BedrockFramework exposes the same `System.IO.Pipelines`-based transport layer that Kestrel uses internally, giving you a clean abstraction for building custom TCP servers and clients without reinventing buffer management. It's from David Fowler (ASP.NET architect), so the patterns here are what eventually got folded into the framework itself. Aimed at people writing game servers, custom protocol proxies, or anything where HttpClient and HttpListener are the wrong tool.

The `IMessageReader<T>` / `IMessageWriter<T>` protocol abstraction is genuinely well-designed — you implement two methods and get framing, backpressure, and cancellation for free. The socket transport uses `SocketAwaitables` with zero-allocation async I/O, which is the same trick Kestrel uses to handle tens of thousands of connections. The experimental package includes working HPack and HTTP/2 flow-control implementations, which are notoriously hard to get right. Named pipe and in-memory transports make local testing straightforward without spinning up real sockets.

The repo hasn't had a real release since it was used as a proving ground for what became .NET 5/6 APIs — large chunks of the experimental package are explicitly incomplete and some have since been superseded by built-in platform APIs. No NuGet stable release; you're on CI builds from a feedz.io feed, which is a supply-chain risk for anything production. Documentation is minimal: the README points at a 2018 conference talk and that's mostly it. The `Experimental` package carries no stability promises at all, so if you build on the Memcached or RabbitMQ protocol stubs you're on your own when they break.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →