← All articles
May 2026

Modernizing legacy .NET without a rewrite

A rewrite is usually the riskiest option on the table, and it is usually the first one proposed. It freezes feature delivery, re-implements years of edge cases from memory, and asks the business to trust a single big cutover.

Strangle, don't replace

I wrap the legacy system and route new functionality through a modern .NET layer. Each new capability ships on the current stack; the old code keeps running untouched until a given piece is ready to move. Over time the modern surface grows and the legacy core shrinks, with no day where the business is down.

Run both, compare, then cut over

For anything risky, a fee calculation or an invoice run or a migration, I run the new implementation next to the old one and compare the output on real data before switching. Differences are bugs you find in private instead of in production.

You can't modernize what you don't understand

VB.NET WebForms, Visual WebGui, EDMX, classic Web API: understanding exactly how the old system behaves is what makes the new one safe. Modernization isn't a fresh start; it's a careful handover.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.

An unhandled error has occurred. Reload 🗙