Un '''''application server''''' è un ''[[software]]'' che fornisce l'[[infrastruttura]] e le funzionalità di supporto, sviluppo ed [[Esecuzione (informatica)|esecuzione]] di [[Applicazione|applicazioni]] e componenti ''[[server]]'' in un contesto distribuito. Si tratta di un complesso di servizi orientati alla realizzazione di applicazioni per il ''[[World Wide Web|web]]'', multilivello ed ''enterprise'', con alto grado di complessità.
== Struttura modulare ==
L'''application server'' è composto da [[Modulo|moduli]] realizzati secondo ''[[Standard (informatica)|standard]]'' ben definiti ed accettati dalla comunità mondiale dei [[Programmatore|programmatori]]. Un esempio di tali standard è il [[Protocollo di rete|protocollo]] [[HTTP]], normalmente utilizzato per la [[trasmissione]] di [[informazioni]] sul ''web''. Al suo interno, un application server disporrà quindi di componenti che consentono ad un'applicazione di lavorare facilmente con lo ''standard'' HTTP.
I moduli normalmente presenti in un ''application server'' sono:
* contenitore di componenti ''server-side''
* gestore degli accessi degli utenti e della [[Sicurezza informatica|sicurezza]]
* gestione accesso a ''[[database]]'' o in generale a sorgenti di dati esterne
* gestore [[Transazione (database)|transazioni]]
* [[interfaccia]] per l'accesso ad un [[sistema legacy|sistema ''legacy'']]
* altri componenti per massimizzare le prestazioni, come ''[[connection pool]]'', ''[[load balancer]]'', ''[[Cache|caching]]'', ecc.
== Tecnologie disponibili ==
Allo stato attuale delle cose, le [[Tecnologia|tecnologie]] su cui possono basarsi gli ''application server'' sono due: [[Microsoft .NET]] e ''[[Java (linguaggio)|Java]]'' di ''[[Sun Microsystems|Sun]]''. Essendo una specifica, quella Java annovera numerose [[Implementare|implementazioni]] sia commerciali che ''[[open source]]'': ''[[JBoss]]'', ''[[WebLogic]]'', ''[[Geronimo]]'', ecc.
Gli standard di ''Java'' non sono unicamente frutto della ''Sun'', ma sono il risultato di un rapporto sinergico tra l'azienda americana e la partecipazione libera di sviluppatori in tutto il mondo.
Gli standard su cui si fonda la tecnologia .NET sono invece stabiliti direttamente da ''[[Microsoft]]''.
Nel mondo Java, gli application server compatibili con le specifiche della ''Sun'' sono detti ''[[application server J2EE]]''.
== I benefici ==
L'adozione di ''application server'' offre particolari benefici soprattutto nei settori dello sviluppo, dell'esecuzione e della gestione integrata dei [[Sistema (informatica)|sistemi]]. I principali vantaggi possono essere così riassunti:
* ''Semplificazione delle attività di sviluppo:'' gli application server creano un ambiente nel quale si possono utilizzare gli strumenti di sviluppo più diffusi sul mercato, consentendo di produrre e distribuire rapidamente applicazioni transazionali altamente scalabili. In generale, questi ambienti comprendono [[Modello|modelli]] e strumenti di ausilio per sviluppare le applicazioni, riducendo i tempi di realizzazione e messa in esercizio dei programmi negli ambienti distribuiti.
* ''Supporto'' di vari [[linguaggio di programmazione|linguaggi]], strumenti e [[piattaforma|piattaforme]]: a seconda dell'application server utilizzato, le applicazioni possono essere scritte nel linguaggio preferito dal programmatore.
* ''Riusabilità del codice:'' la riusabilità del codice deriva sia dalla [[programmazione orientata agli oggetti]] spesso utilizzata in questi casi, sia dall'utilizzo dell'approccio a componenti. Una volta sviluppata la logica applicativa, essa può essere condivisa e riutilizzata.
* ''Gestione delle [[Transazione|transazioni]]''. L'application server facilita la gestione delle operazioni basate su transazioni, assicurando l'integrità transazionale e gestione affidabile dei ''[[back-end]]'' multipli per le risorse e i [[dati]]. Il sistema di gestione delle transazioni gestisce le interazioni con i ''[[database]]'' e le funzioni di ''[[commit]]'', ''[[rollback]]'' e ''[[recovery]]''.
* ''Scalabilità''. Gli ''application server'' supportano il partizionamento delle applicazioni e la distribuzione in [[Rete informatica|rete]] dei componenti. I sistemi [[multiprocessore]] e i ''[[computer cluster|cluster]]'' di ''application server'' assicurano la scalabilità necessaria a gestire anche un gran numero di utenti concorrenti.
* ''Alte prestazioni''. Gli ''application server'' offrono caratteristiche architetturali che permettono di erogare elevate prestazioni quali il ''[[multithreading]]'', il bilanciamento dinamico dei [[Carico|carichi]] di lavoro (''load balancing''), il ''caching'' e il ''[[pooling]]'' degli [[Oggetto (informatica)|oggetti]] e delle [[Connessione|connessioni]] ai database.
* ''Estensibilità''. L'architettura modulare degli ''application server'' e il supporto per i ''server'' e per i moduli applicativi che possono essere caricati dinamicamente, consente alle aziende di estendere facilmente le funzionalità dei loro sistemi e delle relative applicazioni.
* ''Robustezza''. L'architettura basata sui componenti degli ''application server'' e il bilanciamento dinamico dei carichi assicurano l'alta [[disponibilità]] dei sistemi. I componenti del ''server'' e la logica applicativa possono essere riconfigurati, aggiunti o rimossi senza interruzioni nell'erogazione dei servizi agli utenti. Queste caratteristiche sono particolarmente importanti per garantire l'alta disponibilità del sistema, requisito necessario per il buon esito delle operazioni ''mission-critical'' aziendali.
* ''Sicurezza''. Gli ''application server'' offrono funzioni specifiche di sicurezza ''[[end-to-end]]'', necessarie per l'esecuzione delle applicazioni aziendali che richiedono particolari misure di sicurezza e riservatezza dei dati. Per le comunicazioni tra ''[[client]]'' e ''server'', vengono impiegati [[Algoritmo|algoritmi]] ''standard'' e ampiamente testati e collaudati sul ''web'', come quelli offerti dal protocollo [[Secure Sockets Layer|SSL]]. Il ''[[logging]]'' e il ''[[tracking]]'' degli [[Evento|eventi]] forniscono protezione dagli accessi non autorizzati.
== Collegamenti esterni ==
* {{en}} [http://java.sun.com/j2ee/ Java 2 Platform, Enterprise Edition]
* {{en}} [http://www.jboss.org/ JBoss]: ''application server'' J2EE ''open source''
* {{en}} [http://www.ibm.com/websphere WebSphere]: ''application server'' commerciale di [[IBM]]
* {{en}} [http://www.bea.com/weblogic Weblogic]: ''application server'' commerciale di BEA
* {{it}} [http://www.oracle.com/lang/it/appserver/index.html Oracle AS 10g]: ''application server'' commerciale di ''Oracle''
[[Categoria: Software di rete]]
|