Diversi clienti nella stessa soluzione ASP.NET?

2

Sto avendo un sito Web di asp.net in diretta con il suo stile specifico e contenuti specifici. Da quel sito abbiamo costruito un altro sito con la stessa logica (in altri progetti) ma con uno stile diverso e contenuti diversi (e file diversi) nella stessa soluzione. Abbiamo cambiato le opzioni di avvio da Default.aspx nella cartella principale per quel secondo sito. Ora voglio creare un sito più generale che funzioni per diversi clienti, utilizzando gli stessi livelli logici e dati, ma con uno stile e un contenuto diversi.

Il / i sito / i corrente / i si basa molto su SQL Server 2008 R2, dove risiede la maggior parte dei contenuti, ma non tutti. Tutto il contenuto potrebbe essere inserito nel database con un po 'di lavoro, se necessario, soprattutto se otteniamo un sito più generale.

La mia idea è di utilizzare un file di avvio diverso per ogni nuovo cliente, come ad esempio: Default_Customer1.aspx, Default_Customer2.aspx e t c ma sono tutt'altro che sicuro se questo è il modo giusto per farlo. Non voglio avere soluzioni diverse per ogni cliente. So che tutti i clienti riceveranno tutto il codice compilato, anche se parte del codice non verrà mai utilizzato da quel cliente specifico (che ha le sue esigenze specifiche).

Quindi cosa faccio? Dovrei provare a utilizzare diverse opzioni di avvio (file) per ogni cliente, come menzionato sopra, oppure esiste un modo migliore per gestire diversi clienti nella stessa soluzione?

    
posta 4rchit3ct 17.04.2011 - 21:05
fonte

2 risposte

2

Utilizza lo stesso file di avvio per ogni cliente: averne uno per cliente porterà a confusione. Quello di cui hai bisogno è un database per cliente.

Crea un passo di "pre-accesso" in cui prendi il nome utente e lo mappali nel database corretto. Quindi quello che hai è un database di appartenenza ASP con i dettagli di accesso di tutti . Ciò include una tabella aggiuntiva che associa l'utente al database corretto. Quindi, quando qualcuno effettua il login, ottiene la stringa di connessione per il database corretto. Ciò significa che non puoi avere lo stesso nome utente per più siti.

L'alternativa è utilizzare sottodomini separati per ciascun cliente:

ecc.

In questo caso, ogni sottodominio avrebbe la propria stringa di connessione al database, ma significherebbe che è necessario distribuire l'applicazione per ciascun cliente. Tuttavia, vuol dire che puoi avere lo stesso nome utente su siti diversi.

    
risposta data 17.04.2011 - 21:15
fonte
2

Quello che vuoi fare è chiamato Multitenancy e ha diversi approcci. Puoi iniziare a leggerlo in Wikipedia .

Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client-organizations (tenants). Multitenancy contrasts with multi-instance architectures where separate software instances (or hardware systems) operate on behalf of different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.

Some commentators regard multitenancy as an important feature of cloud computing. But the software industry does not universally accept or support the principle of multitenancy, and this may be a source of competitive differentiation...

    
risposta data 17.04.2011 - 22:13
fonte

Leggi altre domande sui tag