Devo separare la parte amministrativa dal resto della guerra

5

Ho creato un'applicazione web usando struts2. Poi ho creato una piccola interfaccia di amministrazione nella stessa guerra.

Con il tempo la webapp è cresciuta e quindi l'interfaccia di amministrazione. Ora, sto pensando di separare l'interfaccia di amministrazione dal resto dell'app in una guerra separata

È una buona idea? C'è qualche vantaggio sulle prestazioni che posso ottenere a causa della separazione tra la guerra amministrativa e il resto della webapp.

La parte di amministrazione consiste principalmente nell'apportare modifiche / aggiornamenti / impostazioni nel database, quindi non influisce direttamente sull'interfaccia utente del resto dell'app. Separandolo si assicura anche che io possa fare aggiornamenti su entrambe le parti senza influenzare l'altro.

[UPDATE]

Non riesco a mettere la parte di amministrazione sul computer locale. È un'app web.

Do they use the same classes? No, l'intero pacchetto è diverso per le azioni di amministrazione e anche la vista è separata.

How do you update them? carica guerra

Do you use application session? si, certo, anche se per admin e amp; normale-utente.

    
posta coding_idiot 30.09.2013 - 13:36
fonte

1 risposta

3

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.

    
risposta data 30.09.2013 - 16:26
fonte

Leggi altre domande sui tag