# Application server

In informatica un application server (a volte abbreviato con la sigla AS) è una tipologia di server che fornisce l'infrastruttura e le funzionalità logiche di supporto, sviluppo ed esecuzione di applicazioni nonché altri componenti server in un contesto distribuito. Si tratta di un complesso di servizi orientati alla realizzazione di applicazioni ad architettura multilivello ed enterprise, con alto grado di complessità, spesso orientate per il web (applicazioni web). In altre parole su di esso gira la cosiddetta logica di business in un'architettura hardware/software di tipo multi-tier e può dunque essere definito un middleware. La sua gestione è opera dei cosiddetti sistemisti applicativi dove oltre alle operazioni di installazione e configurazione un'operazione tipica è quella di deployment dell'applicazione web.

## Descrizione
### Struttura modulare

L'application server è composto da moduli realizzati secondo standard ben definiti ed accettati dalla comunità mondiale dei programmatori. Un esempio di questi standard è il protocollo HTTP, normalmente utilizzato per la trasmissione di informazioni sul web. Al suo interno, un application server dispone di componenti che consentono ad un'applicazione di lavorare facilmente con lo standard HTTP.
I moduli normalmente presenti in un application server sono:
* modulo web server che espone al client browser la logica di presentazione statica delle applicazioni e in diretta interazione con la sottostante logica di business;
* contenitore di componenti server-side detti anche logica di business;
* gestore degli accessi degli utenti e della sicurezza;
* gestione accesso a database o in generale a sorgenti di dati esterne;
* gestore transazioni;
* interfaccia per l'accesso ad un sistema legacy;
* altri componenti per massimizzare le prestazioni, come connection pool, load balancer, caching, ecc.

### Tecnologie disponibili

Allo stato attuale delle cose, le tecnologie su cui possono basarsi gli application server sono diverse: Microsoft .NET, Java di Oracle, Zope. Essendo una specifica, quella Java annovera numerose implementazioni sia commerciali che open source: Oracle GlassFish, JBoss, WebLogic, WebSphere, Geronimo ecc.
Gli standard di Java non sono unicamente frutto prima della Sun Microsystem e adesso di Oracle Corporation, ma sono il risultato di un rapporto sinergico tra le aziende americane 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.

### Vantaggi

L'adozione di application server offre particolari benefici soprattutto nei settori dello sviluppo, dell'esecuzione e della gestione integrata dei 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 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 linguaggi, strumenti e piattaforme software: 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 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.
* Alte prestazioni. Gli application server offrono caratteristiche architetturali che permettono di erogare elevate prestazioni quali il multithreading, il bilanciamento dinamico dei carichi di lavoro (load balancing), il caching e il pooling degli oggetti e delle connessioni ai database.
* Scalabilità. Gli application server supportano il partizionamento delle applicazioni e la distribuzione in rete dei componenti. I sistemi multiprocessore e i cluster di application server assicurano la scalabilità necessaria a gestire anche un gran numero di utenti concorrenti.
* Estendibilità. 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 algoritmi standard e ampiamente testati e collaudati sul web, come quelli offerti dal protocollo SSL. Il logging e il tracking degli eventi forniscono protezione dagli accessi non autorizzati.