ASP.NET MVC 5 Modular Web application Architecture ?
Having a separate project for every module and providing it as Nuget package is a good strategy.
- This help to handle and release many version. Various client obtain various version.
- Installation of new version is accepted through Nuget . This helps during development where App A developer can target 2.0 version of module A while App B developer can target 1.0.
- Single source base with separate branches for every version. Client using 1.0 request a change will obtain code from branch 1.0 with just the fix requested.
- Every module can be release or updated independently.
- During development debugging arranging the code that’s installed using Nuget. Nuget supports it inbuilt. We achieved it in the case .
- Code alteration is wanted in module code .
- Choice 1: Same developer just go ahead and make that change, Make new package and install new version in his app. Got to authorize the change as it is critical code.
- Choice 2: A designated team responsible to solve problem or change request in framework code.
Try this with plugin architecture, just develop various modules that makes up the application as a plugin, then develop the module that is required for all application as a single code base.
Now , installing a component for all particular user, will be a matter of adding or pulling out plugins. More big projects makes you of this particular architecture as it minimize the copy and paste, increases and reuse and speed of development.
Check the nopcommerce an open source project for an idea of how it is done.