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:

  1. He'd start an MVC project.
  2. Run some command (suitably in the IDE itself - I am thinking powershell or NuGet)
  3. And he should get working...
  4. 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?

1 Answer 1


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.

  • A cms solution is fine...but what about the lifecycle. We have some api for user management today. So this api makes uses its own databases, stored procs, etc. Tomorrow there may be an api for something new, say, task management. How should these new features get added onto other projects which uses the platform...?
    – deostroll
    Aug 21, 2013 at 10:25
  • I would follow the extensibility guidelines for the CMS. Or if you were writing your own platform then your extensibility guidelines you wrote if you are dead set on it being in-platform. We are starting to prefer lots of small, sharp services that communicate rather than putting every API into the platform in any case. Aug 21, 2013 at 13:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.