Separare le diverse parti di un'applicazione Web l'una dall'altra come guerre separate significa che è possibile arrestare e riavviare singole applicazioni sul server delle applicazioni e, eventualmente, semplificare il controllo di accesso su ciascuna applicazione. Le applicazioni separate significano che, nella teoria si possono distribuire le modifiche all'amministratore (toglierlo dalla linea, ridistribuirlo) mentre l'applicazione principale è ancora in esecuzione (si noti che la teoria è enfatizzata - ne parleremo più avanti) .
Questo è davvero a favore dei benefici. Si potrebbe notare un leggero aumento delle prestazioni nelle pagine di amministrazione a causa di un numero ridotto di sessioni. È improbabile che si vedano prestazioni migliorate nell'applicazione principale.
Ora le implicazioni che rendono questo molto più impegnativo e portano via alcuni dei possibili guadagni.
Considera se hai un oggetto user
. Questo ha dei metodi come changePassword
che possono essere fatti dall'amministratore o dall'utente.
Considera queste due opzioni:
- stai utilizzando la modalità di ibernazione o altri orm per annotare la tabella utente all'oggetto utente
- hai un livello di accesso ai dati che esegue query native sul database
Di nuovo hai due opzioni per queste:
- due copie del livello oggetto / dati utente - una in ogni guerra
- un jar esterno che entrambe le guerre caricano
Ogni volta che si modifica uno schema (qualsiasi cosa che richieda l'aggiornamento dell'utente o del livello dati) si avrà almeno il doppio del lavoro (ricaricare entrambe le applicazioni e assicurarsi che rimangano sincronizzate) , o dovrai ricaricare il jar condiviso e riavviare entrambe le applicazioni (e se il server delle applicazioni è esigente, riavvialo).
Alla fine della giornata, scoprirai di aver copiato l'intero set di oggetti dati (e livello dati). L'amministratore potrebbe averne altri, ma probabilmente tutto ciò che è nell'app principale sarà nell'amministratore.
C'è un vero rischio di errori se i due duplicano il dato / modello. Inoltre, ti troverai a duplicare le visualizzazioni (la vista di amministrazione di una pagina di aggiornamento degli utenti rispetto alla vista principale dell'app di una pagina di aggiornamento degli utenti).
In definitiva, è probabile che vi siano solo piccole differenze nell'autorizzazione tra le due applicazioni: si desidera condividere la stessa autenticazione, gli stessi dati e probabilmente le stesse visualizzazioni. Sono solo controller diversi per amministratori e utenti normali.
Da questo, probabilmente è meglio tenerlo tutto come un'unica applicazione. Non ripetere te stesso. Non duplicare le viste e non duplicare i modelli.