Architecture Refactoring: Improving the Design of Existing Application Architectures
While there are many qualities by which to judge an architecture, two technologies--dependency injection (DI) and aspect-oriented programming (AOP)--provide guidance on some of the most foundational. Not only do they influence how a system's components are designed and organized, they also determine how easily the system may evolve. In this talk, DI and AOP are presented from an architectural point of view, showing how the principles promoted by DI and AOP translate to tangible architectural benefits such as loose coupling and a separation of business and technical concerns. Concrete examples of how to incrementally adopt DI and AOP across a variety of technologies such as Microsoft ASP.NET WebForms, ASP.NET Model View Controller (MVC), Windows Communication Foundation (WCF), and the Azure Services Platform are demonstrated based on several popular DI and AOP frameworks.