Last post Dec 13, 2013 08:07 AM by Illeris
Dec 11, 2013 08:20 PM|SuperJB|LINK
I'm going to develop a Web Application (should be in MVC but may be in ASP.NET), C#, .NET Framework 4.5, with SQL Server Database system.
Initially, this app will be fully installed on Client A and will suit the needs of Client A.
In the future, I will want to sell this to Client B, C, D...
Now, although I'd like to have this application be unique in terms of code, I know it will have to be tweaked to fit the needs of each client, this means, between the Web App, Business rules, Model, Data Layer and Database, I estimate that (thinking long term),
75-80% will be the same and the remaining 20-25% will vary from client to client.
Imagine this as some sort of application that manages salary payments within a company. Every client will have its own internal rules, taxes and regulations may change from country to country, etc...
I have no idea, what is the best way of going about this in terms of maintainability, scalability, source code, etc...
I would like to have this under 1 solution if possible, but I understand that may be "impossible"
I'm sure this has happened before. Any pointers on what to do OR not to do in this case?!
Dec 12, 2013 12:25 PM|Illeris|LINK
I'd consider building a multi-tenant web application. Isolate everhting that is modifiable per customer and make it part of the configuratoin. In this scenario you can store all customers in different dbases, with one dbase for authentication/authorization
use, and info on the instance to use for each connected user.
If you have a multi-country setup, you should make a layered application:
Dec 12, 2013 05:11 PM|SuperJB|LINK
Thanks for the feedback... "multi-tenant"... I heard this term in the past but I couldn't remember how to call it.
I've checked out some posts online, but, they're talk more on having different UI for each client.
I will need different everything:
- Web App
- Business Layer
- Data Layer
Do you know of any good examples I can learn from?
Dec 13, 2013 08:07 AM|Illeris|LINK
Well, take a look at Microsoft Dynamics CRM. It is one of the best examples I know. It has a solid architecture, flexible, multi-tenant, ...
In your case, you shoud take care of:
Few lines, huge amount of work :-)
PS: basic sample, not bad to learn : CoEvery CRM (http://coevery.codeplex.com/)