Excellent question… I have been working out-of-state with a client, architecting a portal application using ASP.NET MVC 2.
I have to say that this project was really fun, as the requirements drove us to use several new technologies:
- ASP.NET MVC 2
- Managed Extensibility Framework
- Entity Framework 4
- Windows Server AppFabric
- .NET 4
- Visual Studio 2010
- Team Foundation Server 2010
Some parts of this architecture are very cool. For example, we used MEF to allow for the independent development of additional ‘child’ MVC applications that can be ‘plugged in’ to the host MVC application. MEF then is able to discover these extended controllers and views.
Yes, I realize that some of this can be done using Areas. However, Areas is still a ‘tight’ coupling between the main application and the Area. It offers the ability to independently develop different parts of the site using different projects, but it does not offer a way to dynamically choose the controllers and views. This client wanted to use a configuration to allow the client to pick and choose the controllers and views they wanted, as well as configure the specific version of the controller. MEF metadata made this very easy.
Hopefully, I can get my act together soon to post some actual code!