I would like to share my thoughts with you and try to get some advice. I would like to define my application with the best architecture as possible. Any comment would be highly appreciated. Here we go...
My technologies: Sharp Architecture 1.9 (MVC3, NHibernate, Castle Windsor, etc...) and SQLServer database
My busniess case: SaaS application. Many customers with many users each one, one database per customer and the same code (just one instance) of our code
Problem: I need to allow multiple users to connect to different databases at the same time with the same code (just one installation). As far as I know Sharp Architecture doesn't support this stuff by default
After some research I found a new concept for me: Multi-Tenancy. I guess that is the proper way to do it.
So question is:
Is my assumption correct? Is multi tenancy the best way to reach my goal?
On the other hand I found a couple of interesting links:
http://weblogs.asp.net/zowens/archive/tags/Multi-tenancy/default.aspx (MVC approach) http://msdn.microsoft.com/en-us/library/aa479086.aspx
Someone could provide me aditional info?
Thanks for your time
Best regards
Multi-tenancy is your right way to opt for solving your requirement. With multi-tenancy [Single database per tenant and single codebase] we identify the tenant and then use his database to either authenticate his users or use his tenant id to identify his application database and these can be achieved only in a multi-tenant enabled codebase.
If you are interested in delving deep further, please leave your comments so that we can take forward this discussion and involve the community from the architectural perspective.