So, I did it! I finally did it!

I wanted to publish my ideas for a framework, and I did. You can find it on CodePlex at http://www.codeplex.com/aspnetmvp.

Go have a look. I really want to know what you think.

Now, I know there are a million and one frameworks for the web, so I don’t intend on trying to make anything big out of this. But I also know that my customers, usually decent developers with basic ASP.Net knowledge, are constantly asking me for guidance for creating ASP.Net projects. To avoid repeating myself over and over, this project gives them a good starting point. When something better comes along, I can point them to that instead.

I can also use the project as a place for creating new ideas, like

  • WF integration and reusable workflows, like shopping carts or the “hub and spoke UI pattern”.
  • plug-ins and skins, like Dotnetnuke

I definitely do not want to reinvent the wheel. But I believe that there are currently loads of great ideas which could be used in a framework, but just require a little bit of effort to make them simple to use (e.g. UrlRewriting). Most of the developers I know want those extra features without having to spend a lot of time learning a new technology. This framework should be for them.

Instead of totally turning the heads of such developers around, asking them to use a completely new system (e.g. the ASP.Net MVC framework), this framework is meant to provide helpful stuff without stopping you from doing things the way you want (favicons and robots.txt files, for example). It gives you guidance on where to put your CSS files, master pages, scripts, and images. It also provides a way to do testing and project management in a sensible and flexible way. It uses the MVP pattern, but that isn’t mandatory. You can still write code in webforms if you really want to, and then you can refactor them out quite easily later.

I based my MVP implementation on some of the code from the Microsoft Patterns and Practices Web Client Software Factory. However, they made extensive use of the ObjectBuilder and attributes, which I found to be overengineering and too complex. So, as an alternative, I recreated the ideas using generics. I found it works well, and doesn’t have the performance overhead or the learning curve required with WCS.

The code currently uses the AdventureWorks Database, which you will need to install first before using the code. You can find the database on CodePlex here.

I’m currently working on another top-secret project, so I won’t really be spending much time on this. If you’re interested in discussing ideas or doing something with the project, let me know. I’d love to hear what you have to offer.

Otherwise, head on over to the ASP.Net MVP Framework site, and check out the code.

Oh, and until the lawyers call and ask me to change the name, let’s just leave it as it is.

P.S. I forgot to mention a “feature”. The Yahoo UI Framework has some great stuff for CSS, including grid layouts and css reset files. I integrated that too. I put it in the default theme. It means you don’t have to do much work to get your stylesheets to lay out your webpages well.

More to come on that later.