2012-02-03 6 views

risposta

6

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.

0

Nick, che dire del database dovremmo utilizzare un database ogni client o disporre di un database separato per ogni client nel mio scenario, la nostra applicazione è più centrata sul database quindi ci sono molte modifiche per ogni cliente in base ai ruoli aziendali.

+1

Spiacente non ho visto la tua domanda dal momento che non era una risposta al mio post. Può andare in entrambi i casi a patto che la struttura del database sia costruita in modo tale da supportare i database condivisi (utilizzare un ID azienda per dividere i dati o qualcosa del genere). Con la giusta struttura puoi facilmente trasferire singoli clienti alla loro installazione. Nel nostro caso abbiamo entrambi, un singolo database MASTER che memorizza alcune configurazioni master come le mappature client-database, l'elenco dei domini per cui l'applicazione risponde, ecc. In qualsiasi momento possiamo spostare i clienti in giro (da condiviso a dedicato o dedicato a condivisa). –

Problemi correlati