Architettura multi-tier
Nell'ingegneria del software, il termine architettura multi-tier o architettura multi-strato (spesso definita con l'espressione inglese n-tier architecture) indica un'architettura software di tipo client-server per sistemi distribuiti, in cui le varie funzionalità del software sono logicamente separate ovvero suddivise su più strati o livelli software differenti in comunicazione tra loro (nel caso di applicazioni web questi strati sono la logica di presentazione, l'elaborazione dei processi e la gestione della persistenza dei dati).
Descrizione
[modifica | modifica wikitesto]Ciascuno strato è in comunicazione diretta con quelli adiacenti ovvero richiede ed offre servizi allo strato adiacente in maniera concettualmente simile a quanto accade con le architetture di rete a strati (in linguaggio strettamente informatico si dice che ciascuno strato è client-server per gli strati adiacenti, fatta eccezione per gli strati estremi che sono solo client o solo server). Ad esempio, un'applicazione che utilizza il middleware per gestire le richieste di dati tra un utente e un database, utilizza un'architettura multi-tier. In generale i vari strati possono risiedere sulla stessa macchina oppure su macchine elaboratrici differenti mappando così il relativo sistema informatico che ospita, a livello infrastrutturale, l'applicazione. Negli anni novanta si diffuse l'architettura client-server a due livelli, mentre negli anni 2000 l'impiego più diffuso di un'architettura multi-tier è l'architettura a tre livelli.
L'architettura delle applicazioni N-tier fornisce un modello per gli sviluppatori per creare vantaggiosamente un'applicazione flessibile e riutilizzabile ovvero scalabile. Con la separazione di un'applicazione in livelli, per modificare o aggiungere funzionalità, gli sviluppatori possono infatti modificare solo uno specifico livello, piuttosto che dover riscrivere l'intera applicazione, garantendo dunque una maggiore semplicità di progettazione/implementazione secondo la filosofia del divide et impera ed una maggiore manutenibilità.
I concetti di strato e livello sono spesso usati come sinonimi. Tuttavia un punto di vista abbastanza comune è che uno strato è un meccanismo di strutturazione logica per gli elementi che compongono la soluzione software, mentre un livello è un meccanismo di strutturazione fisica per le infrastrutture di sistema.[1]
Architettura three-tier
[modifica | modifica wikitesto]Three-tier[2] è un'architettura client-server in cui l'interfaccia utente, i processi logico funzionali ("regole aziendali"), l'archiviazione informatica dei dati e l'accesso ai dati sono sviluppate e mantenute come moduli indipendenti, la maggior parte delle volte su piattaforme separate. È stata sviluppata da John J. Donovan nell'Open Environment Corporation (OEC), una società di strumenti da lui fondata a Cambridge, Massachusetts.
Il three-tier è un modello di architettura software e allo stesso tempo uno schema di progettazione software. Oltre ai vantaggi abituali di software modulare con interfacce ben definite, l'architettura three-tier è destinata a consentire a qualsiasi dei tre livelli di essere aggiornati o sostituiti indipendentemente dal cambiamento di requisiti o tecnologia. Ad esempio, un cambiamento di sistema operativo nel livello di presentazione interesserebbe solo il codice di interfaccia utente.
In genere, l'interfaccia utente viene eseguita su un desktop PC o workstation e utilizza un'interfaccia utente grafica standard, la logica di processo funzionale può essere costituita da uno o più moduli separati in esecuzione su una workstation o applicazioni server, e un RDBMS in un database server o mainframe contiene i dati di archiviazione logica del computer. Il livello intermedio può essere anche multi-tier (in questo caso l'architettura complessiva si chiama “n-tier architecture”).
Three-tier architecture ha i seguenti tre livelli:
- Livello di presentazione
- Questo è il livello più alto dell'applicazione. Il livello di presentazione mostra le informazioni relative a servizi come merce online, acquisti, e i contenuti del carrello della spesa. Comunica con altri livelli attraverso i risultati di output al livello browser/client e tutti gli altri livelli della rete.
- Livello applicazione (business logic, la logica di primo livello, l'accesso ai dati di secondo livello, o di livello intermedio)
- La logica di primo livello viene tirata fuori dal livello di presentazione e, come suo proprio livello, controlla la funzionalità di un'applicazione eseguendo elaborazioni dettagliate.
- Livello dati
- Questo livello è costituito da server database. Qui le informazioni vengono memorizzate e recuperate. Questo livello mantiene i dati neutrali e indipendenti da applicazioni server o da logica di business. Fornendo informazioni del proprio livello inoltre migliora la scalabilità e le prestazioni.
Stratificazione del livello presentazione
[modifica | modifica wikitesto]A prima vista, il three-tier può sembrare un concetto contrapposto a determinati design pattern come il model-view-controller (MVC), o il model-view-viewmodel (MVVM), ma in realtà gli ultimi due riguardano l'architettura del livello presentazione, mentre il primo riguarda l'architettura complessiva dell'applicazione.
Un'applicazione può quindi essere stratificata utilizzando un'architettura three-tier e di questi tre livelli, il livello presentazione può essere stratificato con il pattern MVC o MVVM.
In un'architettura three-tier che utilizza il pattern MVC o MVVM per il livello presentazione, il model (sorgente dei dati) è rappresentato dal livello applicazione o da un servizio che fa da ponte tra il livello presentazione e livello applicazione. In un'architettura single-tier il model può essere invece direttamente rappresentato dal database.
Utilizzo dello sviluppo web
[modifica | modifica wikitesto]Nel campo web development, il three-tier è spesso utilizzato per fare riferimento a websites, comunemente commercio elettronico, che sono costruiti utilizzando tre livelli:
- Un front-end web server che fornisce contenuti statici, e potenzialmente, alcuni contenuti nella cached dinamica. In applicazione web based, il front-end è il contenuto visualizzato dal browser. Il contenuto può essere statico o generato dinamicamente.
- Un medio processo di contenuti dinamici e generazione del livello di application server, per esempio Java EE, ASP.NET, PHP, Ruby, piattaforma ColdFusion.
- Un back-end database, che comprende due serie di dati e il database management system o RDBMS il software che gestisce e fornisce l'accesso ai dati.
Altre considerazioni
[modifica | modifica wikitesto]Il trasferimento dei dati tra più livelli è parte dell'architettura. Protocolli coinvolti possono includere uno o più di SNMP, CORBA, Java RMI, .NET Remoting, Windows Communication Foundation, sockets, UDP, web services altri protocolli standard o proprietari. Spesso middleware viene utilizzato per collegare i livelli separati. Livelli separati spesso (ma non necessariamente) eseguiti su server fisici separati, e ogni livello si può eseguire in un cluster.
Tracciabilità
[modifica | modifica wikitesto]La tracciabilità end-to-end dei flussi di dati attraverso sistemi di n-tier è un compito arduo che diventa più importante quando i sistemi aumentano di complessità. L'Application Response Measurement definisce i concetti e le API per la misurazione delle prestazioni e la correlazione delle transazioni tra i vari livelli.
Commenti
[modifica | modifica wikitesto]In generale, il termine livello è usato per descrivere la distribuzione fisica dei componenti di un sistema su server separati, computer o reti (nodi di lavorazione). Una architettura Three-tier allora avrà tre nodi di elaborazione. Livelli riferiti a un raggruppamento logico di componenti che possono o non possono trovarsi fisicamente su un nodo lavorazione.
Note
[modifica | modifica wikitesto]- ^ Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
- ^ Eckerson, Wayne W. "Three Tier Client/Server Architecture: Achieving Scalability, Performance, and Efficiency in Client Server Applications." Open Information Systems 10, 1 (January 1995): 3(20)
Voci correlate
[modifica | modifica wikitesto]- Client–server model
- Database-centric architecture
- Front-end e back-end
- Hierarchical internetworking model
- Open Services Architecture
- Rich Internet application
- Service layer
- Applicazione web
- Load balancing
- Multilayered architecture
- MVC
- Sistema distribuito
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Three Tier Architecture, su linuxjournal.com.
- (EN) Microsoft Application Architecture Guide, su msdn.microsoft.com.