Architecture: Designing a "modular" ASP.NET web application
Posted on 2007-08-01
I have not been able to find too many articles that cover this topic and so I was wondering if someone gives me some tips and guidance on this topic...
I would like to be able to build a web application that is made up of server different modules (not a VB module) that can be easily rolled out across different projects. Each module would probably reside in its own individual directory and would add additional functionality, classes, WebPages and database objects/data.
The solution that we come up with should not have to require the recompile of the application to install a new component. If we have a bug fix we want to be able to package up module and redeploy (by an upload manager in the app) it across the different projects.
I would imagine that we would have a base system/platform that contains all the base functionality and the pluming/framework to allow for other modules to be installed and run. It would contain all the base classes for the application framework which the different modules would use. Also due to the complexity of the modules there would probably be dependencies that exist between various modules (i am thinking more at the data layer than cross modular code). And the list goes on.
Also I am thinking of another type of module (like a workflow engine for example) that does not just bring extra page functionality to the site, but could enable other modules to it or take advantage of the code that it exposes to run.
Lastly a third type of module that would plug into different events that the main modules raise. For example we could deploy an auditing system that is run by an event that each of the main modules fire when they attempt to update the database (I image that interfaces would be used here to ensure that the modules have the required events so that the module can plug-in correctly).
So in short I was just wondering if anyone can point me in the right direction as to how about designing such a system. To see what peoples experiences have been like. To see if anyone knows whether there are any tutes, patterns or websites that go into how one would practically pull this off and the problems involved, not just the theory of how nice it would be if you can do this or what it should end up looking like.