Sto lavorando a un piccolo team che progetta un sistema di gestione dei processi per essere utilizzato da diversi clienti all'interno dello stesso settore. L'obiettivo del sistema e i requisiti di alto livello tra i clienti sono molto simili. Tuttavia, come previsto, una volta che abbiamo iniziato a scavare più a fondo nelle loro esigenze individuali, abbiamo ottenuto una personalizzazione piuttosto ampia richiesta per ogni singolo cliente coinvolgendo praticamente tutto, inclusi dati, moduli di input, convalida, flusso di lavoro, reporting ecc.AngularJS Multi Tenancy
Aggiungere tutto questo ci siamo resi conto che un'architettura multi-tenant sarebbe probabilmente l'approccio migliore per farlo accadere. Il backend è molto oltre la progettazione ed è un RESTful api in .net in fase di creazione con ServiceStack, RavenDB e Sql Server. Chiunque abbia familiarità con ServiceStack saprà che è estremamente flessibile e costruito con la capacità di innestare la mente - questo ha reso l'implementazione di un'API REST multi-tenant molto più semplice di quanto ci aspettassimo. Stiamo utilizzando una convenzione molto semplice per identificare e autorizzare gli inquilini controllando un valore nella sessione che appartiene a ciascuna richiesta (tutte le richieste "specifiche del tenant" devono essere autenticate in modo che sia sempre disponibile una sessione). Quindi attualmente non c'è quasi nessuna necessità di tenere traccia o passare un id titolare dal client in qualsiasi URL di percorso. Pertanto, per l'API di back-end, abbiamo raggiunto l'obiettivo di progettare un singolo codice base che supporti clienti diversi con una buona quantità di riutilizzo del codice e flessibilità per personalizzare/estendere le funzionalità specifiche del tenant secondo necessità.
Quindi, con il backend in gran parte distanziato, abbiamo rivolto la nostra attenzione al frontend in cui ci stiamo davvero sforzando di implementare un approccio multi-tenant simile in AngularJS. Parte del problema è il fatto che siamo relativamente nuovi a livello angolare. Abbiamo un po 'di esperienza nella creazione di app monouso usando lo "schema di cartelle" standard, ma quando guardiamo ai nostri requisiti multi-tenant qui stiamo davvero lottando per legare tutto insieme (struttura generale del progetto/percorsi/viste) per supportare lo stesso multi - obiettivi di progettazione persistenti in AngularJS che abbiamo raggiunto con il backend (base di codice singolo che supporta il riutilizzo, flessibilità & personalizzazione). Lo module pattern sembra una grande opzione per "inserire" le funzionalità personalizzate per titolare, ma la cosa più importante che ci manca ancora è un approccio generale all'architettura che ci fornisce un singolo codice base AngularJS che supporti gli obiettivi menzionati sopra. I professionisti di AngularJS possono aiutarci a superare la gobba e raccomandare un approccio qui?
Grazie!
Credo che dovrai essere un po 'più specifico o questo sarebbe chiuso come "troppo ampio". – Shomz
Potrebbe essere utile pubblicare piccoli esempi di codice che mostrano come sarebbero le direttive/templates/controller/server se hai appena creato sistemi completamente separati per loro. Quindi le risposte sarebbero in grado di mostrarti come rifattorizzarle. –
D'accordo con quanto sopra, è davvero difficile suggerire un approccio senza ulteriori dettagli, il tuo layout cambia? sono solo alcune convalide minori, è css senza sapere quali cambiamenti tra gli inquilini è difficile suggerire schemi. – PiniH