Server app, server Web: qual è la differenza?

23 agosto 2002

D: Qual è la differenza tra un server delle applicazioni e un server Web?

UN:

Un server Web gestisce esclusivamente le richieste HTTP, mentre un server applicazioni serve la logica aziendale ai programmi applicativi attraverso un numero qualsiasi di protocolli.

Esaminiamo ciascuno in modo più dettagliato.

Il server Web

Un server Web gestisce il protocollo HTTP. Quando il server Web riceve una richiesta HTTP, risponde con una risposta HTTP, come l'invio di una pagina HTML. Per elaborare una richiesta, un server Web può rispondere con una pagina HTML statica o un'immagine, inviare un reindirizzamento o delegare la generazione della risposta dinamica a qualche altro programma come script CGI, JSP (JavaServer Pages), servlet, ASP (Active Server Pages ), JavaScript lato server o qualche altra tecnologia lato server. Qualunque sia il loro scopo, tali programmi lato server generano una risposta, molto spesso in HTML, per la visualizzazione in un browser web.

Comprendi che il modello di delega di un server Web è abbastanza semplice. Quando una richiesta arriva nel server Web, il server Web passa semplicemente la richiesta al programma più in grado di gestirla. Il server Web non fornisce alcuna funzionalità oltre a fornire semplicemente un ambiente in cui il programma lato server può eseguire e restituire le risposte generate. Il programma lato server di solito fornisce da solo funzioni come l'elaborazione delle transazioni, la connettività del database e la messaggistica.

Sebbene un server Web possa non supportare di per sé le transazioni o il pool di connessioni al database, può impiegare varie strategie per la tolleranza agli errori e la scalabilità come il bilanciamento del carico, la memorizzazione nella cache e il clustering, funzionalità spesso assegnate erroneamente come funzionalità riservate solo ai server delle applicazioni.

Il server delle applicazioni

Per quanto riguarda il server delle applicazioni, secondo la nostra definizione, un server delle applicazioni espone la logica di business alle applicazioni client attraverso vari protocolli, eventualmente incluso HTTP. Mentre un server Web si occupa principalmente di inviare HTML per la visualizzazione in un browser Web, un server applicazioni fornisce l'accesso alla logica aziendale per l'utilizzo da parte dei programmi applicativi client. Il programma applicativo può utilizzare questa logica proprio come chiamerebbe un metodo su un oggetto (o una funzione nel mondo procedurale).

Tali client del server delle applicazioni possono includere GUI (interfaccia utente grafica) in esecuzione su un PC, un server Web o anche altri server delle applicazioni. Le informazioni che viaggiano avanti e indietro tra un server delle applicazioni e il suo client non sono limitate al semplice markup di visualizzazione. Invece, le informazioni sono la logica del programma. Poiché la logica assume la forma di dati e chiamate di metodo e non di HTML statico, il client può utilizzare la logica di business esposta come preferisce.

Nella maggior parte dei casi, il server espone questa logica aziendale tramite un'API del componente, come il modello del componente EJB (Enterprise JavaBean) trovato sui server delle applicazioni J2EE (Java 2 Platform, Enterprise Edition). Inoltre, il server delle applicazioni gestisce le proprie risorse. Tali compiti di mantenimento del gate includono sicurezza, elaborazione delle transazioni, pool di risorse e messaggistica. Come un server Web, anche un server delle applicazioni può impiegare varie tecniche di scalabilità e tolleranza agli errori.

Un esempio

Ad esempio, si consideri un negozio online che fornisce informazioni sui prezzi e sulla disponibilità in tempo reale. Molto probabilmente, il sito fornirà un modulo con il quale è possibile scegliere un prodotto. Quando invii la tua query, il sito esegue una ricerca e restituisce i risultati incorporati in una pagina HTML. Il sito può implementare questa funzionalità in numerosi modi. Ti mostrerò uno scenario che non utilizza un server applicazioni e un altro che lo fa. Vedere come questi scenari differiscono ti aiuterà a vedere la funzione del server delle applicazioni.

Scenario 1: server Web senza un server delle applicazioni

Nel primo scenario, un server Web da solo fornisce le funzionalità del negozio online. Il server Web prende la tua richiesta, quindi la passa a un programma lato server in grado di gestire la richiesta. Il programma lato server cerca le informazioni sui prezzi da un database o un file flat. Una volta recuperate, il programma lato server utilizza le informazioni per formulare la risposta HTML, quindi il server Web le invia di nuovo al browser Web.

Per riassumere, un server Web elabora semplicemente le richieste HTTP rispondendo con le pagine HTML.

Scenario 2: server Web con un server delle applicazioni

Lo scenario 2 è simile allo scenario 1 in quanto il server Web delega ancora la generazione della risposta a uno script. Tuttavia, è ora possibile inserire la logica aziendale per la ricerca dei prezzi su un server delle applicazioni. Con questa modifica, invece di sapere come cercare i dati e formulare una risposta, lo script può semplicemente chiamare il servizio di ricerca del server delle applicazioni. Lo script può quindi utilizzare il risultato del servizio quando lo script genera la sua risposta HTML.

In questo scenario, il server delle applicazioni serve la logica aziendale per la ricerca delle informazioni sui prezzi di un prodotto. Questa funzionalità non dice nulla sulla visualizzazione o su come il cliente deve utilizzare le informazioni. Invece, il client e il server delle applicazioni inviano i dati avanti e indietro. Quando un client chiama il servizio di ricerca del server delle applicazioni, il servizio cerca semplicemente le informazioni e le restituisce al client.

Separando la logica dei prezzi dal codice di generazione di risposte HTML, la logica dei prezzi diventa molto più riutilizzabile tra le applicazioni. Un secondo cliente, come un registratore di cassa, potrebbe anche chiamare lo stesso servizio di un impiegato che controlla un cliente. Al contrario, nello scenario 1 il servizio di ricerca dei prezzi non è riutilizzabile perché le informazioni sono incorporate nella pagina HTML. Per riassumere, nel modello dello Scenario 2, il server Web gestisce le richieste HTTP rispondendo con una pagina HTML mentre il server delle applicazioni serve la logica dell'applicazione elaborando i prezzi e le richieste di disponibilità.

Avvertenze

Recentemente, i servizi Web XML hanno offuscato il confine tra server applicazioni e server Web. Passando un payload XML a un server Web, il server Web può ora elaborare i dati e rispondere come i server delle applicazioni hanno fatto in passato.

Inoltre, la maggior parte dei server delle applicazioni contiene anche un server Web, il che significa che è possibile considerare un server Web un sottoinsieme di un server delle applicazioni. Sebbene i server delle applicazioni contengano la funzionalità del server Web, gli sviluppatori raramente distribuiscono i server delle applicazioni in tale capacità. Invece, quando necessario, spesso distribuiscono server Web autonomi in tandem con i server delle applicazioni. Una tale separazione di funzionalità aiuta le prestazioni (semplici richieste Web non influiscono sulle prestazioni del server delle applicazioni), la configurazione della distribuzione (server Web dedicati, clustering e così via) e consente la selezione dei prodotti migliori.

Tony Sintes è un consulente indipendente e fondatore di First Class Consulting, una società di consulenza specializzata nel collegare sistemi e formazione aziendali disparati. Al di fuori di First Class Consulting, Tony è uno scrittore freelance attivo, nonché autore di Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

Ulteriori informazioni su questo argomento

  • Per ulteriori articoli sui server delle applicazioni, sfoglia la sezione dei server delle applicazioni Java dell'Indice degli argomenti di JavaWorld

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Voglio di più? Vedere la pagina dell'indice delle domande e risposte Java per il catalogo completo delle domande e risposte

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Per più di 100 consigli penetranti Java da alcune delle migliori menti del settore, visita 'JavaWorld s Tips Java pagina indice

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Ulteriori informazioni sui server di applicazioni e sui server Web nella nostra discussione Enterprise Java

    //forums.idg.net/[email protected]@.ee6b80a

  • Iscriviti alla newsletter settimanale gratuita Enterprise Java di JavaWorld

    //www.javaworld.com/subscribe

  • Troverai una vasta gamma di articoli relativi all'IT tratti dalle nostre pubblicazioni gemelle su .net

Questa storia, "App server, Web server: qual è la differenza?" è stato originariamente pubblicato da JavaWorld.