Series · Day 100 of 100
.NET & ASP.NET Core
- 01Why I still choose .NET for backends: a practical guideAfter 5+ years across Node, .NET and Go, here is why .NET keeps winning my backend decisions.Oct 27, 2026
6 min - 02Minimal APIs: a production-ready setup, explained simplyMinimal APIs are not just for demos. This is how I structure them for real services.Oct 27, 2026
7 min - 03Program.cs, line by line: a hands-on guide for engineersThe file every .NET dev touches — and few can explain fully.Oct 27, 2026
6 min - 04DI lifetimes: Singleton, Scoped, Transient — a deep diveThe bug I see most in code reviews is a lifetime mismatch.Oct 27, 2026
6 min - 05The Options pattern, properly: best practices explainedStop reading IConfiguration strings all over your codebase.Oct 27, 2026
7 min - 06The middleware pipeline: order matters, explained simplyMost auth and CORS bugs I debug are simply middleware in the wrong order.Oct 27, 2026
7 min - 07Endpoint filters in minimal APIs: a practical .NET guideThe minimal API answer to action filters — reusable logic around endpoints.Oct 27, 2026
7 min - 08Organize minimal APIs with route groups, explained simplyHow I keep 80+ endpoints clean without controllers.Oct 27, 2026
7 min - 09Validation with FluentValidation: a practical .NET guideData annotations get messy fast. FluentValidation keeps rules readable and testable.Oct 27, 2026
7 min - 10Global error handling with ProblemDetails for productionOne consistent error format for every failure — the RFC 9457 way.Oct 27, 2026
8 min - 11Use records for DTOs: a practical guide for developersRecords make API contracts concise, immutable and comparable.Oct 27, 2026
8 min - 12EF Core from zero to production: lessons from productionThe setup I use on every new .NET project.Oct 27, 2026
6 min - 13AsNoTracking: free performance — lessons from productionMost of your queries do not need change tracking.Oct 27, 2026
6 min - 14Configuring EF Core relationships in .NET & ASP.NET CoreOne-to-many, many-to-many and owned types without surprises.Oct 27, 2026
9 min - 15Project to DTOs with Select: a .NET guide for developersFetch the columns you need — not the whole entity graph.Oct 27, 2026
7 min - 16EF Core migrations in a team: a .NET guide for developersMigrations are code. Treat them like code.Oct 27, 2026
8 min - 17Compiled queries for hot paths: best practices explainedWhen a query runs thousands of times per minute, skip the translation step.Oct 27, 2026
6 min - 18Bulk updates with ExecuteUpdate: lessons from productionStop loading 10,000 entities just to change one column.Oct 27, 2026
6 min - 19Global query filters: a practical guide for developersSoft delete and multi-tenancy without touching every query.Oct 27, 2026
9 min - 20Handling concurrency in EF Core: lessons from productionTwo admins edit the same order. Who wins?Oct 27, 2026
7 min - 21When I reach for Dapper: real-world lessons and examplesEF Core is my default. Dapper is my scalpel.Oct 27, 2026
9 min - 22Clean Architecture: the .NET project layout in practiceThe structure I use for medium-to-large .NET solutions.Oct 27, 2026
9 min - 23Vertical slice architecture: a .NET guide for developersOrganize by feature, not by technical layer.Oct 27, 2026
8 min - 24CQRS with MediatR in practice: best practices explainedSeparate commands from queries without building two databases.Oct 27, 2026
8 min - 25MediatR pipeline behaviors: .NET lessons from productionValidation, logging and transactions — written once.Oct 27, 2026
6 min - 26Result pattern vs exceptions: a .NET guide for developersExceptions for the exceptional. Results for expected failures.Oct 27, 2026
7 min - 27Domain events in .NET: a practical guide for developersLet your domain announce what happened instead of calling everything directly.Oct 27, 2026
9 min - 28JWT authentication in ASP.NET Core: a step-by-step guideThe minimal correct setup for a stateless API.Oct 27, 2026
6 min - 29Refresh token rotation in .NET: best practices explainedStay logged in safely without long-lived access tokens.Oct 27, 2026
11 min - 30Policy-based authorization: .NET lessons from productionRoles are a start. Policies scale with real business rules.Oct 27, 2026
7 min - 31Permission-based authorization: best practices explainedHow I implemented fine-grained access control in a CRM.Oct 27, 2026
8 min - 32ASP.NET Core Identity: when to use it, explained simplyBuild, buy, or Identity? An honest breakdown.Oct 27, 2026
7 min - 33Built-in rate limiting: a practical guide for developersProtect your API with zero extra packages since .NET 7.Oct 27, 2026
6 min - 34Output caching in ASP.NET Core: best practices explainedCache whole responses on the server — with tags you can invalidate.Oct 27, 2026
5 min - 35HybridCache in .NET 9+: a practical guide for developersThe cache API we always wanted: L1 memory + L2 distributed + stampede protection.Oct 27, 2026
6 min - 36Distributed caching with Redis: best practices explainedThe patterns that kept a high-traffic e-commerce API fast.Oct 27, 2026
8 min - 37Response compression: easy wins — a practical .NET guideSmaller payloads, faster APIs — often a two-line change.Oct 27, 2026
6 min - 38async/await pitfalls in .NET: what developers should knowAsync code that looks right but quietly hurts your API.Oct 27, 2026
10 min - 39ConfigureAwait(false) in ASP.NET Core: a practical guideDo you still need it? Short answer: in app code, no.Oct 27, 2026
7 min - 40Pass CancellationToken everywhere in .NET & ASP.NET CoreUsers close tabs. Your server should stop working too.Oct 27, 2026
7 min - 41ValueTask vs Task: what every .NET developer should knowA performance tool, not a default.Oct 27, 2026
6 min - 42Use IHttpClientFactory, always: best practices explainednew HttpClient() in a loop is a production incident waiting to happen.Oct 27, 2026
10 min - 43Resilience with Microsoft.Extensions.Http.ResilienceRetries, timeouts and circuit breakers in one line.Oct 27, 2026
5 min - 44Background services in .NET: what developers should knowLong-running work without a separate worker project.Oct 27, 2026
7 min - 45System.Threading.Channels: .NET best practices explainedA fast in-process queue for producer/consumer work.Oct 27, 2026
7 min - 46Scheduled jobs: Hangfire vs Quartz in .NET & ASP.NET CoreCron in .NET without reinventing it.Oct 27, 2026
9 min - 47Health checks that mean something in .NET & ASP.NET CoreA 200 OK from /health does not prove your app works.Oct 27, 2026
7 min - 48Structured logging with Serilog: lessons from productionLogs you can query instead of grep.Oct 27, 2026
8 min - 49Tracing with OpenTelemetry: .NET lessons from productionSee one request across your API, database and message broker.Oct 27, 2026
6 min - 50OpenAPI in .NET 9+: a practical guide for developersSwashbuckle left the template. Here is the new setup.Oct 27, 2026
7 min
