How to build a common infrastructure for my web apps using asp.net mvc, and efficiently manage it?
The goal is to increase developer productivity. The common infrastructure stuff includes visual & interactive components like customizable menus, consistent web page layout, consistent navigation experience, breadcrumbs, etc. It will also have some api’s for user & role management.
So this platform/infrastructure will have its own database & tables (which can be deployed using entity framework). But there are other things which I don’t have an answer to:
-
The database will also have user defined types, stored procs, etc. How should these get “deployed” (or adopted) in the target application?
-
There would be a set of controllers and views intended for user and role management. They need to be a part of the target project. What is the best way this can be included?
Just to outline the kind of experience a developer should get:
- He’d start an MVC project.
- Run some command (suitably in the IDE itself – I am thinking powershell or NuGet)
- And he should get working…
- At some point later, there would have been some updates in the platform…how should they be updated…the problems he might face here…how to resolve them…etc…?
How to design such a infrastructure project?
These sorts of infrastructure projects are pipe dreams of scope creep — you are hinting at that much yourself with the “user defined types” bits. While there seems to be a pancea of productivity at the end of the rainbow, typically you’ll end up with a horribly convoluted project the developers spend more time fighting against than anything else.
If you want to go down this path, you should probably consider adopting a full-blown CMS product such as The Orchard Project (open-source) or SiteCore (commercial). Even if you insist on building your own I would start by looking at those CMS sort of products as that is the kind of things that has solved these problems for you so it is a good place to steal ideas.
2