Creare progetti separati per client sarà problematico da mantenere mentre un singolo progetto per tutti i client potrebbe essere difficile da personalizzare. È una linea sottile e le tue esigenze detteranno come costruisci la tua soluzione.
Uno dei miei progetti più recenti in cui eseguiamo SAS (Software as a Service) siamo stati in grado di creare la nostra applicazione MVC utilizzando un'architettura di plugin in modo che ogni cliente POTESSE avere la propria DLL distribuita nel BIN che abilitasse le personalizzazioni per solo quel client (alle viste, alle risorse o persino ai controller). Siamo in grado di sfruttare un'unica base di codice e avere molti client, la maggior parte senza personalizzazioni e alcuni con personalizzazioni da secondarie a pesanti.
Ogni cliente ha un URL univoco per il loro "portale" e il più delle volte hanno domini privati, in modo da http://app.mycompany.com o http://mycompanyapp.com e alcuni sono anche ospitati sul nostro sito, http://hostingcompany.com/client/.
Costruendo un'applicazione in grado di determinare quale client si basa sull'URL, siamo stati in grado di gestire tutti questi casi con facilità. Quando distribuiamo, disponiamo di un unico codice base (distribuito solo una volta su una singola cartella) e tutti i siti utilizzano la stessa distribuzione del codice.
Eseguiamo una web farm in cui abbiamo molti .NET Web Server e disponiamo di un'impostazione di bilanciamento del carico e tutti i siti dispongono di pagine ping con cui interagiscono i nostri bilanciatori di carico per determinare la loro integrità.
Come ho detto, i tuoi bisogni determineranno qual è la soluzione migliore per te.
fonte
2012-02-03 04:39:53
cura di definire il "cliente"? –