Brownfield Series

Extreme ASP.NET Makeover

Getting Your House in Order
This is part one of a multipart article series about improving an existing "classic" ASP.NET Web application. This first part helps to get your house in order with good development practices on an existing codebase, including version control, issue tracking, and automated self-contained build scripts.

Testing
This is part two of a multipart article series about improving an existing "classic" ASP.NET Web application. This second part focuses on automated testing.

XHTML and CSS Improvements
This is Part 3 of a multipart article series about improving an existing "classic" ASP.NET Web application. This third part focuses on XHTML and CSS.

JavaScript improvements
This article will focus on refactoring ScrewTurn Wiki’s JavaScript using jQuery, and testing it with QUnit.

Web Site Improvements Using jQuery and jQuery UI
This is part 5 of a multipart article series about improving an existing "classic" ASP.NET Web application. This fifth part focuses on jQuery and jQuery UI.

Separation of Concerns
This is part 6 of a multipart article series about improving an existing "classic" ASP.NET Web application. This installment focuses on improving separation of concerns in Web applications.

Death of a Singleton
In part 6, we moved away from the UI a little and worked more in the code behind the pages. In this article, we’ll continue that work and focus on a specific pattern that is used through the codebase: the Singleton.

Disentangling Our Tangled Web
This is part 8 of a multipart article series about improving an existing "classic" ASP.NET Web application. This installment focuses on better ways to wire together loosely-coupled applications using dependency injection and an inversion of control container.

Mr. Escher, Your Software is Ready
This is part 9 of a multipart article series about improving an existing "classic" ASP.NET Web application. This installment focuses on improving the architecture of our software by using dependency injection to detect dependency cycles.