Improve Your .NET
& Software Architecture

Join 73,000+ subscribers accelerating their skills every week

One practical tip every Saturday

.NET best practices and actionable advice

Software Architecture deep dives and fresh ideas

Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture

Join thousands of software engineers

Previous issues of The .NET Weekly

API Versioning Should Be Your Last Resort

May 9, 2026

Most teams reach for v2 too early because they don't have a contract evolution strategy. Here's the API change management approach I prefer: evolve co...

What Invariants Are (and Why a Domain Model Is the Best Place to Enforce Them)

May 2, 2026

Most 'DDD-ish' code I review enforces business rules everywhere except where it should: in the model itself. The same rule ends up duplicated across h...

The Test Pyramid Is a Lie (and What I Do Instead)

April 25, 2026

The test pyramid made sense when integration tests meant a shared database server and a 20-minute build. It doesn't match how I build .NET systems in ...

Why I Switched to Primary Constructors for DI in C#

April 18, 2026

I resisted primary constructors for a while. They felt like a shortcut that would cost me later. But after using them across several projects, I'm sol...

Implementing the Saga Pattern With Wolverine

April 11, 2026

Long-running business processes don't fit neatly into a single request. Wolverine's Saga support gives you a convention-based approach to orchestratin...

Implementing the Inbox Pattern for Reliable Message Consumption

April 04, 2026

The Outbox pattern guarantees reliable publishing. But what about the consumer side? The Inbox pattern ensures each incoming message is processed exac...

Getting Started With PgVector in .NET for Simple Vector Search

March 28, 2026

Vector search doesn't require a dedicated vector database. PostgreSQL with pgvector gives you similarity search right next to your relational data. He...

Scaling SignalR With a Redis Backplane

March 21, 2026

SignalR connections are server-local. Scale out to multiple instances and messages stop reaching the right clients. Here's how the Redis backplane fix...

Optimizing Bulk Database Updates in .NET: From Naive to Lightning-Fast

March 14, 2026

Seven approaches to bulk-updating rows in PostgreSQL from .NET using Dapper and EF Core, from naive per-row updates to binary COPY. Each step cuts dow...

5 Architecture Tests You Should Add to Your .NET Projects

March 07, 2026

Learn about five essential architecture tests that can help ensure the quality and maintainability of your .NET projects.

...