Reading configuration by key from a dictionary means every consumer knows the key names and nothing validates them; binding to a class means the shape is declared once.…
3.1 in December 2019 is the long-term support release, and .NET 5 in November 2020 drops the “Core” without being a different platform. Skipping 5 and waiting for…
A long-running process alongside the web application is a first-class concept here, rather than a separate supervisor configuration and a script. The cancellation token threaded through every call…
Returning a large result set meant materialising the whole thing into a list, and the async equivalent of a generator did not exist until C# 8. This is…
A health endpoint written as a controller action goes through routing, filters and model binding — which is exactly the machinery a health check should not depend on.…
The file sits next to appsettings.json, contains environment variables and URLs, and is read only by the tooling — never by a published application. Putting a real connection…
3.0 brought a JSON serialiser into the framework, and it is stricter than the third-party one it replaces in ways that break existing code quietly. Case-sensitive deserialisation is…
C# 8 lets a reference type declare whether it may be null, which turns the language’s oldest category of bug into a compile-time warning — on an existing…
A long-running process alongside the web application — a queue consumer, a scheduler — is a first-class concept here rather than a separate supervisor configuration. The cancellation token…