-1

We've developed a Web Application using ASP.NET and Sql Server. We've started selling it and of course are still continue improving and developing it.

How do we go about updating each client's version of the site? We have, maybe, 50 customers. So 50 different folders and 50 different db's sounds like a bad idea. Is there any known method for solving this kind of scenario?

Some more detaials: we are developing a CRM, for 50 companies. They will have 10 users maybe. It makes 500 users and their customers and products.

Pierre.Vriens
  • 233
  • 1
  • 2
  • 11
  • 2
    Huge question: What if I tell you Continuous Integration and Version Control? Does your client request personal customization? you are in a step where this questions should already has more than an answer – Angelo Badellino Jun 28 '12 at 13:25
  • Thus topic was recently discussed. Look at this post - [Evolution of an Application: how to manage and improve core engine][1] [1]: http://programmers.stackexchange.com/q/154264/57164 – Yusubov Jun 28 '12 at 13:27
  • Thanks SnOrfus, for teaching English :) @AngeloBad Can Version Control softwares manage a few multiple folders? Nope, they dont request. – Muhammet Göktürk Ayan Jun 28 '12 at 13:29
  • So you have 50 different source code? – Angelo Badellino Jun 28 '12 at 13:34
  • No. Are you saying, use one folder and one db? – Muhammet Göktürk Ayan Jun 28 '12 at 13:37
  • Are *you* running 50 sites, or one site with 50 client versions, or does each of your customers run his own version somewhere in his own providers network space? Please clarify. – Doc Brown Jun 28 '12 at 13:43
  • 50 sites will run at our service. Actually I'm asking same thing. We are developing a Crm, for 50 companies. They will have 10 users maybe. It makes 500 users and their customers and products. So We dont want to use one db. Can I explain? – Muhammet Göktürk Ayan Jun 28 '12 at 13:53
  • @MuhammetGöktürkAyan: there are many possible solutions, from keeping 50 entirely separate installations to having it all as one single site with one db and many things in between. What is best for you depends on many things that are too much for a single Stack Overflow question. – RemcoGerlich Jun 16 '16 at 11:55
  • But, IF you setup things well, then releasing a new version of your application should be _automated_, and it should also update the database. You need that no matter which route you take. – RemcoGerlich Jun 16 '16 at 11:56

3 Answers3

4

If each customer has a separate copy that you regularly ship updates to, your application must be able to handle upgrades gracefully.

  1. Database versioning

    You must store the schema version in the database. Each time you change the schema, you have to include logic in an admin module so customers can upgrade the database (semi-automatically). Each version upgrade should be defined as an action, and upgrading across several versions means running the actions one after the other.

  2. Application versioning

    When you install new versions of the software, you have to provide a migration procedure. Sometimes this means that all customer changes must go into a special folder that is copied back into your software after upgrade. At other times it means you must make an installer that "patches" the installed copy.

Joeri Sebrechts
  • 12,922
  • 3
  • 29
  • 39
0

The way you described that you have one application and its been used for several different clients and as you mentioned you have 50 folders and 50 databases it means you have the entire application on your server or one server probably.

If I get the descriptions correct then I would suggest you look into the Whitelable Solution for this application. check this link

You would have all the code in one place and one database {or you may use different if applicable}

hope this helps

Junaid
  • 222
  • 2
  • 7
  • One folder maybe, but one database will work slowly. Doesnt it? – Muhammet Göktürk Ayan Jun 28 '12 at 13:44
  • Yes that's why I said `{or you may use different if applicable}`, well yes I think my statement wasn't much clear in making this sense. But, yes you may use different databases for different clients – Junaid Jun 28 '12 at 13:59
  • Ok. How can I manage it? – Muhammet Göktürk Ayan Jun 28 '12 at 14:01
  • 2
    @MuhammetGöktürkAyan, if your database is designed correctly it should be able to handle terrabytes of information. If you don't know how to do that designing, then you should hire a database expert not let application programmers (or worse an ORM) design your database for you. One database should be able to support thousands of customers' data. You do not want to have to try to keep 50 different versions of a database and web application in synch as you upgrade your system. – HLGEM Jun 28 '12 at 14:05
0

Generally it is not possible to update each client version.

One solution is to provide updates as additional modules or plugins. So there is no need to modify the core.

It works in the case of php application called wordpress.

Wordpress cms is used to develop blog websites.

In wordpress you can add or remove plugins,which provides additional features.

pandu
  • 11
  • 1
  • 10