Static void Main(string[] args)


Welcome to the DotNET leet!

A blog about .NET: concurrency, EF Core, ASP.NET Core and related topics, with runnable code and measured results. Subscribe below to get new posts by email.

Latest Blogs

Start With a Loosely Coupled Monolith

Greenfield project, small team, no microservices on day one. Bounded contexts as separate projects, one schema per module, messages between modules, and why the split to services later is a deployment decision and not a rewrite.

Architecture, Modular Monolith, Microservices, Messaging

When a DTO Is Worth Writing: Composition, Boundaries and CQRS with MediatR

Part 2 of the DTO series. The 1-to-1 mapping trap, the two jobs a DTO actually does, data on the inside versus outside, and how MediatR queries and commands replace CRUD wrappers around database tables.

DTO, MediatR, CQRS, EF Core, API design

5 Rules for Writing Better DTOs in .NET (and the Most Common Traps)

Record or class, properties or fields, where the Dto suffix belongs, one type per boundary, and why DataAnnotations on positional records silently return valid. Each trap comes with a runnable example and the fix.

DTO, Records, System.Text.Json, FluentValidation

Concurrency & Locking in .NET - The Series

A five-part series that follows one race condition through every layer it can live on: in-process primitives, optimistic & pessimistic database locking, distributed locks and lock-free .NET, all tested against the same overselling scenario under concurrent load.

Concurrency, Locking, EF Core, SQL Server

.NET Aspire Blazor Identity Integration

A full step-by-step guide to integrating ASP.NET Core Identity with a .NET Aspire Blazor app: DbContext setup, role & user seeding, cookie auth across services, and a Blazor auth test page.

Identity, .NET Aspire, Blazor