Thursday, May 08, 2008

Reference Architecture (or framework) for building ASP.NET applications

The software services industry and IT shops in general frequently grapple with three recurring problems

1. Similar applications are built repeatedly without getting the full benefit of the learnings, best practices, tools from other projects within the company/industry.

2. Enforcing good practices on developers who are increasingly inexperienced but tasked with important projects has become difficult.

3. Customers need and expect many supportability features (see the supportability blog post) to be standard from an application and are often unsaid in requirements documents.

To solve these three problems - reuse/knowledge sharing, enforcing good practices and providing a set of standard out-of-the-box features, a reference architecture or a framework could be built for different types of applications - web applications, mobile applications, office applications, windows forms applications etc.

Once such a framework is built future applications built by the company can utilize this framework to get applications that are guaranteed with good quality code (best practices are followed), guaranteed with a standard set of useful features regardless of the domain and allows tools, utilities, techniques of other projects within the company/industry to be utilizied by the project team. Such a framework has many benefits including reduction in development time, reduction in maintenance effort expended on the application after it has gone live (because this follows good practices and hence is robust) and provides useful features that come free.

Of course, the framework itself must be made very easy to use (with the help of wizards, add-ins, VS 2005 item templates and project templates). The ultimate vision for such a framework is to have developers strictly only build UI, their business classes, the DB schema and queries. Everything else should be taken care of by the framework.

An example of what such a framework may contain for an ASP.NET application is provided in the mind map shown here. Will explain this mind map in another post.

2 comments: