#586 – December 07, 2025
the beating heart of ASP.NET Core
Inside Kestrel: The beating heart of ASP.NET Core
11 minutes by Bipin Joshi
Kestrel is more than just a hosting layer. Bipin explores the origin and evolution of Kestrel — how and why Microsoft built it, how it behaves in development mode and how it integrates with IIS or Azure in production and what can you customize and control using the command line or configuration settings. He also gives a few advanced insights on performance, containers, and troubleshooting.
The Platform Powering Auth, Identity, and Security for AI Products
sponsored by WorkOS
Enterprise customers demand SSO, directory sync, granular permissions, and audit logs built to strict compliance standards. Building in-house takes months and creates ongoing maintenance that pulls focus from your core product. WorkOS lets teams ship these features fast with clean APIs, streamlined customer onboarding, and built-in SOC 2 and GDPR support. Trusted by OpenAI, Cursor, Vercel, and 1,000+ more companies.
.NET validation
17 minutes by Ricardo Peres
.NET's Data Annotations validation system lets you validate class properties using built-in attributes like Required, Range, and EmailAddress, or create custom validators. The system works through the Validator class which checks objects and returns validation results. .NET 10 adds new validation features for ASP.NET Core Minimal APIs and Blazor, including support for nested objects and collections through the Microsoft.Extensions.Validation package.
.NET performance: Efficient async code
11 minutes by Nick Kovalenko
C# transforms async methods into state machines that handle both synchronous and asynchronous operations efficiently. Task allocates memory on the heap, while ValueTask avoids allocations when operations complete synchronously by using a struct instead of a reference type.
Vertical slice architecture: Where does the shared logic live?
8 minutes by Milan Jovanović
Vertical slice architecture improves clarity and speed by organizing code around features, but shared logic often threatens its independence. Milan explains how to avoid the common “common” folder trap by using a three-tier sharing model: freely share infrastructure, centralize stable domain logic, and keep feature-specific code local.
Transaction Script pattern
8 minutes by Chris Woodruff
Transaction Script is a pattern where each use case becomes one procedure that handles everything from reading requests to saving data. It works well for small, focused features or experiments under tight deadlines. Problems arise when the same business rules get copied across multiple scripts with slight variations. Eventually, you end up with scattered logic that's hard to test and maintain. Chris suggests the solution is extracting core business rules into dedicated domain services while keeping the script structure for coordination.
And the most popular article from the last issue was: