Stiamo avviando un nuovo progetto MVC 5 che alla fine consisterà di 4 siti Web a seconda del tipo di utente:
- Uno interno, per i dipendenti della società.
- Uno per agenti, appaltatori indipendenti che lavorano per la società.
- Uno per i venditori esterni.
- Uno per i clienti, che potrebbe essere uno qualsiasi dalle loro case.
Il sito web interno avrà una funzionalità notevolmente maggiore rispetto a tutti gli altri, e dato che sarà accessibile solo dai dipendenti, verrà mantenuto in una rete privata. La soluzione è strutturata in questo modo:
- Un progetto Dati in cui vengono mantenute le classi del modello. Questo è stato fatto utilizzando il Database di Entity 6 First.
- Un progetto Risorse con stringhe e immagini.
- Un progetto Web con gli elementi MVC: controller e viste, oltre a CSS / JS, ecc.
Dato che un sito web sarà interno mentre l'altro sarà accessibile tramite un IP pubblico, il mio primo pensiero è stato quello di avere due soluzioni separate: una per il Web interno e una per tutte le altre (cambiando tra le visualizzazioni in base alla registrazione utente), distribuendoli su un altro server. Il lato negativo che vedo è che ci sarebbe un sacco di codice duplicato tra le soluzioni: non solo il progetto Data dovrebbe essere molto simile o addirittura lo stesso, le risorse e le viste avrebbero un sacco di cose comuni.
Mi chiedo se sarebbe più sensato avere una sola soluzione con un progetto Data, un progetto Risorse e poi progetti InternalWeb e ExternalWeb. Forse anche avendo tre progetti diversi invece di ExternalWeb: AgentsWeb, CustomerWeb, SalesWeb.
Ho poca esperienza con le applicazioni MVC mentre li sto distribuendo, quindi mi piacerebbe sapere in che modo sono viste le migliori pratiche per questo tipo di situazione.