Ci sono le seguenti due modi di personalizzazione di un'applicazione multi-tenant 1. Presentazione tier cambia cambiamento 2. Sistema.
Di seguito sono le opzioni di personalizzazione tipiche preferite nelle applicazioni web in un ambiente multi-tenant, sono
1) l'interfaccia utente e il branding,
2) del flusso di lavoro e di business regole,
estensioni 3) del modello di dati, e
4) controllo di accesso
In cui 1 appartiene alla modifica del livello presentazione e il resto tutti costituiscono la modifica del livello di sistema in un'applicazione multi-tenant.
MVC è considerato un'opzione di personalizzazione del livello presentazione in cui è possibile consentire all'inquilino di avere il proprio tema, logo e layout personalizzato o controller personalizzati e sezioni di pagina personalizzate.
Per le impostazioni di sistema, ci sono molti modi per raggiungere questo obiettivo, tuttavia i seguenti sono i più pervasivo
- personalizzazione a livello di database
- personalizzazione a livello di middleware.
Nell'app SaaS, ci sono funzionalità e implementazione. Nel caso del successivo, ci sarà una configurazione specifica del tenant che governa quale implementazione deve essere invocata per l'inquilino preso in considerazione in base alla sua configurazione e quindi fornisce il servizio. Questi sono raggiunti utilizzando un meccanismo di iniezione delle dipendenze personalizzato che è a conoscenza del tenant e verrà inoltre richiesta una configurazione specifica del titolare che può essere utilizzata durante il runtime per facilitare questo processo.
Nel caso di (1), i dati nel db devono essere isolati in base all'identificatore del titolare in modo che la configurazione oi metadati non siano condivisi tra i tenant in un ambiente multi-tenant.
Così i componenti principali saranno
- un identificatore inquilino ottenuto da un contesto inquilino
- multi-tenant DataStorage
- di autenticazione specifico inquilino [forma firma/singolo profilo di accesso, ecc ..]
IMHO, dal momento che il tuo argomento è ampio, se puoi presentarci aree più specifiche, discuteremo sulla loro implementazione.
Spero che questo risponda alla tua domanda, per favore pubblica il tuo aggiornamento.
Grazie, la tua risposta è davvero utile. Hai un'esperienza di implementazione in .net? – Alexandr
@Alexandr: Grazie, Alexandr. Ho esperienza nell'implementazione ma non nella parte dell'iniezione tenant basata su DI. Mi sono imbattuto in alcune implementazioni e blog su questo punto. Si prega di postare qualsiasi altra query dalla tua fine relativa a questo post. – Saravanan