The UDP performance ladder: from UdpClient to XDP englisch
From a naive C# loop to Rust on kernel rings: what allocations, syscalls, dispatch models and the network stack each really cost, measured rung by rung.
9 Beiträge · alle Tags
From a naive C# loop to Rust on kernel rings: what allocations, syscalls, dispatch models and the network stack each really cost, measured rung by rung.
C# state machines, .NET 11 Runtime Async, Java virtual threads after JEP 491, Go, Kotlin, Rust, and actors: every runtime decides who pays when a call blocks.
A fat ASP.NET controller refactored one complaint at a time: feature folders, one class per use case, errors as values, and rules that survive leaving HTTP.
What the actor model guarantees, when a table beats an actor, and how far one mailbox and a single PostgreSQL row can carry you. No Orleans or Akka required.
Users keep saving the same note under three different names. One small C# program with Microsoft.Extensions.AI and pgvector catches the duplicates, powers fuzzy dropdowns, and needs no training and no prompts.
Cache, fan-out, job coordination, leader election, idempotency: running all of it on the one PostgreSQL you already operate, and why SKIP LOCKED is the one pattern deliberately avoided.
One attributed class becomes a DI registration, an HTTP endpoint, a JSON-RPC method and an MCP tool at build time. What it buys and what it costs when source generators carry the whole architecture.
Three interfaces that look interchangeable and are not: when each one reads configuration, what that means for reloads, and the pitfalls that hit real codebases.
In 2023 I asked why the orchestrator at the heart of .NET Aspire shipped as a proprietary binary under a dev-only EULA. Two years later it landed on GitHub under MIT. The story, and what it teaches about auditing "open source".