Revisione e comprensione dell'architettura di applicazioni Web

0

Sono uno sviluppatore java amatoriale e ho lavorato a questa applicazione web nella mia attuale azienda. L'applicazione è realizzata nel framework MVC di Spring. Hibernate viene utilizzato come strumento ORM mentre il database è DB2. Maven è usato come strumento di compilazione e implementazione per questa applicazione. Il livello di presentazione e il livello di servizio sono completamente separati l'uno dall'altro, cioè entrambi gli strati sono in contenitori di applicazioni Web separati. Per questo utilizziamo due server diversi, un server Apache Tomcat e un server JBoss. Apache Tomcat viene utilizzato come server che contiene il livello di presentazione e JSP con tutto il materiale CSS e javascript. Mentre la business logic e le classi di servizio sono presenti nel server delle applicazioni JBoss. Di seguito è riportato il diagramma che rappresenta l'architettura dell'applicativo.

Quindil'ideaquièchetuttalalogicadipresentazionedellamiaapplicazioneèpresentenelserverApacheTomcatmentretuttalalogicaaziendaleèpresentenelserverJBoss.Percollegareillivellodipresentazioneallalogicaaziendale,utilizziamo Spring HTTPInvoker . Spring HTTPInvoker è simile al richiamo del metodo remoto ma tramite protocollo HTTP. I dati vengono passati tra i due livelli attraverso gli oggetti modulo. Le classi del modulo sono presenti in entrambi i server. Hibernate si prende cura di tutte le connessioni con il database. Ho chiesto al mio supervisore i vantaggi di tale architettura dicendo che la logica di presentazione è completamente disaccoppiata e anche se lo stack JBoss è inattivo possiamo aggiungere un altro stack riprendere le oprazioni il prima possibile . Ho discusso con lui sul fatto che il pattern MVC fornisce già quella quantità di astrazione e disaccoppiamento. Solo per motivi di scalabilità sono separati i due livelli in due server diversi.

Volevo conoscere i vantaggi e gli svantaggi dell'architettura in termini di prestazioni, scalabilità e flessibilità. Attualmente sto studiando i modelli di progettazione delle applicazioni aziendali. Per favore dimmi le tue opinioni sull'architettura e su cosa deve essere corretto o migliorato.

    
posta Aditya Cherla 29.07.2016 - 12:53
fonte

2 risposte

0

Non ho mai visto una tale architettura e francamente non riesco a vedere alcun vantaggio sostanziale.

1) Se il server JBoss non funziona, significa che è necessario impostare un'altra istanza. Ma se la tua applicazione è interamente su un server, devi anche impostare un'altra istanza. Nessuna differenza.

2) Canale HTTP tra i server - qui otteniamo un overhead delle prestazioni e non otteniamo nulla tranne i problemi relativi allo sviluppo e al mantenimento di questa roba.

3) Separazione della presentazione e della logica aziendale: questo genere di cose suona bene in teoria, ma nella pratica potrebbero esserci delle eccezioni. La cosa in sé è buona, rende il codice molto più pulito, ma non è necessario andare alle estremità.

Pertanto, non vedo alcun vantaggio in questa configurazione. Forse mi manca qualcosa di importante, tutto sopra è solo il mio punto di vista.

    
risposta data 29.07.2016 - 16:33
fonte
0

Se hai più applicazioni (o progetti per avere in un prossimo futuro), questa architettura ha senso. Puoi riutilizzare il livello business / servizio. Sto assumendo che il livello di servizio sia a grana grossa e non legato ai livelli dell'interfaccia utente, in modo che ogni modifica dell'interfaccia utente non richieda una modifica del servizio. Spesso il problema non è con il modello di architettura / design. È una cattiva implementazione / astrazione / contratto.

    
risposta data 09.06.2017 - 18:33
fonte

Leggi altre domande sui tag