Stiamo costruendo circa 10 siti MVC ASP.NET che hanno un insieme comune di funzionalità (e URL, percorsi, controllori, azioni e viste corrispondenti). I siti condivideranno anche un insieme di base di oggetti di dominio (ad esempio utenti, società) e attributi di base su tali oggetti (ad esempio nome, indirizzo, ecc.)."ereditare" siti MVC ASP.NET da un'app modello comune? (multi-tenancy)
Ma ogni sito sarà anche altamente personalizzato ed esteso dalla base. Ad esempio, il nostro sito per le grandi aziende pubbliche avrà i campi "Sussidiaria" e "Stock Symbol" sull'oggetto dominio della Società, mentre il nostro sito per le startup avrà gli attributi "Venture Firm" e "Funding". Anche l'aspetto grafico varierà considerevolmente, anche se stiamo cercando di mantenere il più fedelmente possibile l'HTML (campi modulo extra modulo per attributi di oggetti dominio extra, ecc.). Esamineremo anche le immagini con parsimonia, in modo che possiamo, ad esempio, riutilizzare la stessa grafica dei pulsanti su tutti i siti.
In ogni caso, stiamo cercando di capire il modo migliore per analizzare e progettare le cose in modo da poter riutilizzare tanto codice e quanti più test possibili senza limitare la nostra libertà di aggiungere attributi per app e variare l'interfaccia utente tra le app .
Ho familiarità con come gestire la multi-tenancy con personalizzazione limitata come si trova in StackOverflow/SuperUser/ServerFault (o MSDN/TechNet), dove l'interfaccia utente è leggermente diversa e il modello di dati è più -o meno identico. Ma quando i modelli e l'interfaccia utente sono molto diversi (ma ereditati da una base comune), sono meno sicuro di come procedere.
Sono meno preoccupato per i problemi operativi, poiché probabilmente eseguiremo ciascun sito in un appdomain separato e li ospiteremo su database separati. Sono più preoccupato di ridurre i costi di manutenzione del codice a lungo termine, aumentare l'agilità (ad esempio, aggiungere nuove funzionalità alla base senza rompere le app derivate) e realizzare risparmi sui costi di sviluppo e test a breve termine mentre costruiamo il nostro secondo, 3 °, 4 °, ecc. Sito.
Sto cercando consigli e suggerimenti di alto livello, ma anche suggerimenti concreti su come rendere reale tale guida utilizzando le pratiche MVC ASP.NET moderne.
Mi rendo conto che questa è una domanda molto generica, ma per i principianti cerco sia una guida di alto livello sia consigli pratici per capire come applicare tale guida con ASP.NET MVC, incluse cose come :
- raccomandazioni dove splittare di base/derivati attraverso progetti di Visual Studio
- punte di controllo di origine per evitare di sborsare
- suggerimenti dello schema di database (FWIW, i nostri database sono tutti small-- sotto 10K righe per tabella, in modo costo di sviluppo/test è più di un problema di DB perf)
- suggerimenti su come riutilizzare Controller/Viste/ecc. corrispondente agli attributi del modello "base", in particolare riutilizzando l'interfaccia utente per cose come i moduli "nuovo cliente" che avranno un mix di attributi di base e derivati.
Chiunque ha un buon consiglio su come progettare un'app multi-tenant come questa?
Non sono impressionato ... Parla un bel discorso, ma sono tutte discussioni vaporware senza specifiche, e non si fa menzione della strategia multi-tenancy nel suo progetto open-source; sembra che non abbia avuto il tempo di implementarlo. –