Quali sono i pro e i contro dell'utilizzo di RMI o JMS tra il livello Web e quello aziendale?

StackOverflow https://stackoverflow.com/questions/71144

  •  09-06-2019
  •  | 
  •  

Domanda

Per una tipica app Web client-to-Servlet/WS-to-Business Tier (Spring o EJB), quali sono i compromessi tra approcci come RPC remoto o messaggistica per il livello Web (Servlet) e il livello Business remoto, a parte il vantaggio? aspetti di sincronizzazione/asincrono di base?

È stato utile?

Soluzione

Per client web intendi browser web?Se è così, i miei consigli sono quelli come DWR o JAX-RS.RMI o JMS funzionano davvero solo quando entrambi i lati sono codice Java.

Con qualsiasi tecnologia remota, il problema più grande nel loro utilizzo tende a essere quanto invadente diventa la tecnologia sui tuoi oggetti aziendali.per esempio.utilizzando l'interfaccia/eccezioni RMI ovunque o utilizzando le API JMS all'interno del codice aziendale.

La mia raccomandazione è di utilizzare POJO ovunque in Java, quindi utilizzare una tecnologia simile Remotazione primaverile per sovrapporre il tuo middleware sia che si tratti di RMI o JMS o altro, ma disaccoppia totalmente il codice middleware dalla tua logica aziendale in modo da poter passare da una tecnologia all'altra in qualsiasi momento (e mantenere il codice della logica aziendale più semplice e concentrato sul tuo problema aziendale).

Vedi ad esempio il Implementazione Camel di Spring Remoting che quindi ti consente di utilizzare uno qualsiasi di questi trasporti e protocolli come RMI, JMS o anche semplice HTTP, e-mail, file o XMPP, quindi passa da uno all'altro banalmente utilizzando una semplice modifica della stringa URI.

Altri suggerimenti

Usiamo RMI tramite Spring e lo troviamo molto facile da usare, abbastanza robusto e veloce.Sebbene i nostri requisiti riguardassero un collegamento abbastanza reattivo e non vi fosse alcuna reale necessità di aggiungere un componente di messaggistica.

SUN RMI si è rotto per noi.

Le impostazioni e la garbage collection per un'applicazione a esecuzione molto prolungata con messaggistica continua.Stiamo apportando patch per farlo funzionare continuamente.Le applicazioni JMS che eseguiamo non rilevano gli errori di memoria insufficiente o i problemi gc riscontrati da RMI.Tutto ciò che deve chiamare System.gc() periodicamente e non funziona con la raccolta incrementale per recuperare le risorse è codificato in modo errato.

L'affidabilità dell'RMI migliora con JDK 6 e le corrette impostazioni delle proprietà, ma JHC è un framework complicato.L'RMI verrebbe notevolmente migliorato utilizzando i canali in nio e risolvendo gli usi di sun nio di system.gc().

La risposta corretta: comunicazione (meccanismo) separata dal codice del dominio.RPC è strettamente associato e il protocollo e l'applicazione possono interferire tra loro.JMS separa il protocollo dall'applicazione, un paradigma molto migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top