Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/series/the-framework-before-the-framework && read --section="top" 0%
Series

The Framework Before the Framework

In reading order.

  • 16 parts
  • ≈ 80 min total
  • 16 published
Part 1 05 Sep 2025 6 min read

The Framework Before the Framework

DShop.Common is the shared library nine microservices were built on - and the rough draft of a framework its authors later shipped as Convey.

Part 2 05 Sep 2025 5 min read

Queue Names Are the Whole Topology

One naming class in DShop.Common decides every exchange, routing key and queue in the estate - the message topology is a string-formatting problem.

Part 3 06 Sep 2025 5 min read

Command or Event, Enforced by Convention

In DShop.Common a command and an event are published by identical code - the difference between them is a marker interface and a promise nothing enforces.

Part 4 07 Sep 2025 5 min read

The Envelope That Scrambled Itself

DShop.Common's correlation context threads request identity through every message hop - and a long positional argument list quietly transposes half its fields.

Part 5 07 Sep 2025 5 min read

Rejected Events — a Two-Lane Error Taxonomy

DShop.Common decides a message's fate from the type of exception a handler throws - domain failures become events, infrastructure failures get retried.

Part 6 08 Sep 2025 5 min read

The Retry Path Nobody Took

A complete broker-requeue retry implementation sits in DShop.Common's subscriber, fully written and never called - and its comment explains exactly why.

Part 7 09 Sep 2025 5 min read

What the Framework Doesn't Have

An audit of the messaging patterns DShop.Common leaves out - no outbox, no inbox, no consumed dead-letter - and how each absence became a Convey package.

Part 8 09 Sep 2025 4 min read

Hand-Rolled MediatR in Thirty Lines

DShop.Common ships its own in-process command and query dispatch - marker interfaces, a handler triple, and one dynamic double-dispatch standing in for a library.

Part 9 10 Sep 2025 5 min read

The Fluent Handler That Explodes on Success

A reusable try-catch-finally wrapper in DShop.Common awaits a null-conditional delegate - so the success path throws a NullReferenceException the failure path avoids.

Part 10 11 Sep 2025 5 min read

Three Load Balancers Behind One Config String

DShop.Common picks client-side discovery, a router, or a static address from one word in JSON - and self-registers each service into Consul with a heartbeat lease.

Part 11 11 Sep 2025 4 min read

A Load Balancer With Amnesia

DShop.Common's Consul registry tracks which service instances it has used to spread load evenly - then registers as transient, discarding that memory on nearly every request.

Part 12 12 Sep 2025 4 min read

Writing to the Backing Field

DShop.Common stamps a server-generated Guid into an immutable command by reflecting into its compiler-generated backing field - immutability the type system only pretends to enforce.

Part 13 13 Sep 2025 5 min read

Every Error Is a 400 and Says Too Much

DShop.Common's error middleware maps every exception to HTTP 400, computes a safe message, then throws it away and serialises the raw exception text to the caller.

Part 14 13 Sep 2025 5 min read

Revoking the Irrevocable

DShop.Common makes a stateless JWT revocable with a Redis deny-list and a per-request round-trip - plus an iat claim in milliseconds and two validators that disagree.

Part 15 14 Sep 2025 6 min read

BuildServiceProvider Nine Times

Each concern in DShop.Common builds a throwaway DI container just to read config - nine per service, atop three coexisting container frameworks and a vendored config parser.

Part 16 15 Sep 2025 6 min read

The Rough Draft of Convey

A retrospective on DShop.Common - the frozen shared-contracts tombstone, a release candidate pinned forever, and a concordance of what Convey kept, renamed, and fixed.

Which CV would you like?

Pick the one closest to the role. Each is two pages and carries the same facts.

Applied AI

Agentic AI & Cloud Engineer · multi-agent systems, RAG and MCP on AWS

Cloud & .NET

C#, .NET 10 and ASP.NET Core microservices on AWS and Azure · Terraform & AWS CDK

Data Engineering

AWS lakehouse · Kinesis, Glue (PySpark), Apache Iceberg, Lake Formation

Everything

All three domains, with the standout project from each