The map
- Not started
- In progress
- Done
- Builds on
- 01From source to machine codeIL, assemblies, the JIT0/2
- 02Types and memoryStructs, the GC, Span, generics0/4
- 03The modern languageNullability, records, LINQ0/3
- 04Asynchronous codeTasks, state machines, contexts0/2
- 05Building a serviceThe host, the pipeline, the database0/3
- 06Next: system designSame ideas, at service scale
- TimeoutLibrary ↗Every async API in .NET takes a CancellationToken. Passing one with a deadline down through HttpClient and EF Core calls is the timeout pattern, applied inside one process.
- Retry with backoff and jitterLibrary ↗HttpClient calls are where transient failures show up. Retries with backoff and jitter belong in the HTTP pipeline, and only for requests that are safe to repeat.
- BackpressureLibrary ↗A bounded System.Threading.Channels channel makes a fast producer wait for a slow consumer, which is backpressure between two parts of the same service.
- Cursor paginationLibrary ↗Skip and Take in EF Core become OFFSET and LIMIT, which get slower the deeper you page. Keyset pagination with a Where on the last seen key does not.
Everything here is about .NET 10, the current long-term-support release (November 2025), and C# 14. Nearly all of it also holds for .NET 8 and 9; where a behaviour changed recently, the topic says which version. The examples were run as file-based apps (dotnet run file.cs) with SDK 10.0.402 and runtime 10.0.13 in the mcr.microsoft.com/dotnet/sdk:10.0 container on Linux x64. Byte counts and thread ids can differ on your machine.