Domanda

Sto lavorando ad un'applicazione Web in Java che ottiene dati dai servlet tramite chiamate AJAX.

Questa applicazione presenta diversi elementi di pagina che ottengono nuovi dati dal server a intervalli abbastanza rapidi.

Con molti utenti, la domanda sul server ha un potenziale per diventare abbastanza elevata, quindi sono curioso:

Quale approccio offre le migliori prestazioni:

Molti servlet (uno per ogni tipo di richiesta dati)?

o

un singolo servlet in grado di gestire tutte le richieste?

È stato utile?

Soluzione

Non c'è motivo di prestazioni per avere più di un servlet. In un'applicazione Web, viene istanziata solo una singola istanza di una classe servlet, indipendentemente da quante richieste. Le richieste non sono serializzate, vengono gestite contemporaneamente, quindi è necessario che il servlet sia sicuro per i thread.

Altri suggerimenti

Il framework struts utilizza un servlet per tutto ciò che è nella tua app. Le tue cose si collegano a quell'unico servlet. Se funziona per loro, probabilmente funzionerà per te.

Un possibile motivo per disporre di più servizi è che se in futuro dovessi espandersi su più server per gestire il carico, è più semplice spostare un servizio separato sul suo server piuttosto che farlo "dietro le quinte" se tutto esce da un unico servizio.

Detto questo, c'è un ulteriore sovraccarico di manutenzione se si hanno più servlet, quindi si tratta di bilanciare la flessibilità futura con una minore manutenibilità.

Non vi sono miglioramenti delle prestazioni nel caso in cui si utilizzino più servlet poiché per ogni servlet la richiesta viene gestita in un thread separato, purché non sia a thread singolo.

Ma mantenendo la modularità e la separazione del codice, puoi avere più servlet.

Come ha detto Tony, non c'è davvero alcun motivo per usare più di un servlet, a meno che non sia necessario interrompere una complessa classe Servlet Java o forse implementare un filtro di intercettazione.

Sono sicuro che sai che puoi avere più istanze dello stesso servlet purché registri nodi diversi nel file web.xml per la tua app, ovvero supponendo che tu voglia farlo.

A parte questo, da quello che sto capendo, potresti trarre vantaggio dall'architettura delle comete - http://en.wikipedia.org/wiki/Comet_ (programmazione) .
Esistono già alcune implementazioni di Comet su alcuni container servlet - ecco uno sguardo su come usare Ajax e Comet - http://www.ibm.com/developerworks/java/library/j-jettydwr/ . Dovresti studiare prima di decidere sulla tua architettura.

BR,
~ A

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