title: Architettura three-tier
text: # Architettura three-tier
  
  In ingegneria del software e nell'ambito dei sistemi informatici, l'espressione architettura three-tier ("a tre strati") indica una particolare architettura software e hardware di tipo multi-tier per l'esecuzione di un'applicazione web che prevede la suddivisione dell'applicazione in tre diversi moduli o strati dedicati rispettivamente alla interfaccia utente, alla logica funzionale (business logic) e alla gestione dei dati persistenti. Tale architettura tipicamente mappa a livello fisico-infrastrutturale quella del sistema informatico ospitante l'applicazione da eseguire.
  
  ## Descrizione
  
  Tali moduli sono intesi interagire fra loro secondo le linee generali del paradigma client-server (l'interfaccia è cliente della business logic, e questa è cliente del modulo di gestione dei dati persistenti) e utilizzano interfacce ben definite. In questo modo, ciascuno dei tre moduli può essere modificato o sostituito indipendentemente dagli altri conferendo scalabilità e manutenibilità all'applicazione. Nella maggior parte dei casi, si intende anche che i diversi moduli siano distribuiti su diversi nodi di una rete anche eterogenea.
  
  Una soluzione three-tier tipica prevede, per esempio, un PC dedicato all'interfaccia utente grafica, una workstation o un application server per la business logic e un database server o un mainframe per la gestione dei dati. Questo schema generale è piuttosto diffuso e costituisce un'architettura di riferimento per molte tecnologie moderne. Può anche essere esteso ipotizzando che lo strato intermedio sia a sua volta "stratificato"; in questo caso si giungerebbe ad un'architettura multi-tier o architettura n-tier. Pare che sia l'espressione "three-tier" che "multi-tier" siano state inizialmente usate nella documentazione Rational.
  
  Lo schema "three-tier" può essere definito un design pattern, e presenta diverse analogie con il pattern Model-View-Controller. Come MVC, l'architettura three-tier svolge un ruolo importante nella progettazione di applicazioni web, specialmente basati su Web service. In questo contesto, i tre strati sono intesi in una accezione più specifica:
  
  * l'interfaccia verso l'utente è rappresentata da un Web server e da eventuali contenuti statici (es. pagine HTML);
  * la business logic corrisponde a una serie di moduli integrati in un application server per la generazione di contenuti dinamici (per esempio, moduli Java EE su JBoss)
  * i dati (acceduti dalla business logic) sono depositati in maniera persistente su un DBMS (data layer). Può risiedere sulla stessa macchina host dell'application server oppure su macchina host dedicata e separata.
  
  Ad esempio: CICS , IBM WebSphere MQ , TIBCO , e Tuxedo sono middleware e fanno tutti parte di quel settore di software che svolge il preciso ruolo di intermediazione tra applicazioni diverse.
  
  