Domanda

Di recente ho visto alcune offerte di lavoro per sviluppatori che includono una frase che recita più o meno in questo modo: " Deve avere esperienza con l'architettura N-Tier " ;, oppure " Deve essere in grado di sviluppare app N-Tier " ;.

Questo mi porta a chiedere: che cos'è l'architettura di livello N? Come si fa a fare esperienza con esso?

È stato utile?

Soluzione

Wikipedia :

  

In ingegneria del software, multilivello   architettura (spesso indicata come   architettura n-tier) è a   architettura client-server in cui,   la presentazione, l'applicazione   elaborazione e gestione dei dati sono   processi logicamente separati. Per   esempio, un'applicazione che utilizza   middleware per soddisfare le richieste di dati   tra un utente e un database impiega   architettura a più livelli. Più   uso diffuso di "multi-tier"   architettura " si riferisce a tre livelli   architettura.

È discutibile ciò che conta come "livelli", " ma secondo me deve almeno attraversare il confine del processo. Altrimenti si chiama strati. Ma non ha bisogno di trovarsi su macchine fisicamente diverse. Anche se non lo consiglio, puoi ospitare livello logico e database nella stessa casella.

alt text

Modifica : una delle implicazioni è che il livello di presentazione e il livello di logica (a volte chiamato Livello di logica aziendale) devono attraversare i confini della macchina "attraverso il filo". a volte su rete inaffidabile, lenta e / o insicura. Questo è molto diverso dalla semplice applicazione desktop in cui i dati vivono sullo stesso computer dei file o dell'applicazione Web in cui è possibile accedere direttamente al database.

Per la programmazione di livello n, è necessario raggruppare i dati in una sorta di forma trasportabile denominata " set di dati " e farli volare sopra il filo. .NET DataSet o protocollo di servizi Web come SOAP sono alcuni di questi tentativi di far volare oggetti sul filo.

Altri suggerimenti

Si basa su come separare il livello di presentazione dalla logica aziendale principale e dall'accesso ai dati ( Wikipedia )

3 livelli significa Livello presentazione + Livello componente + Livello accesso dati. N-tier è quando vengono aggiunti livelli inutili oltre questi tre ed è etichettato con una parola d'ordine in modo che non sembri che i tuoi architetti siano un mucchio di scimmie crack. Lo dico basandomi sull'architettura di livello N con cui devo lavorare.

È una parola d'ordine che si riferisce a cose come la normale architettura Web con ad esempio Javascript - ASP.Net - Middleware - Livello database. Ognuna di queste cose è un "livello".

  

Le applicazioni di dati di livello N sono applicazioni di dati in cui sono separate   più livelli. Chiamate anche "applicazioni distribuite" e " multitier   applicazioni, " Le applicazioni di livello n separano l'elaborazione in discreta   livelli che sono distribuiti tra il client e il server. Quando tu   sviluppare applicazioni che accedono ai dati, si dovrebbe avere un chiaro   separazione tra i vari livelli che compongono l'applicazione.

     

Una tipica applicazione di livello n include un livello di presentazione, un mezzo   livello e un livello dati. Il modo più semplice per separare i vari livelli   in un'applicazione di livello n è creare progetti discreti per ogni livello   che si desidera includere nella propria applicazione. Ad esempio, il   il livello di presentazione potrebbe essere un'applicazione Windows Form, mentre il   la logica di accesso ai dati potrebbe essere una libreria di classi situata nel livello intermedio.   Inoltre, il livello di presentazione potrebbe comunicare con i dati   logica di accesso nel livello intermedio attraverso un servizio come un servizio.   La separazione dei componenti dell'applicazione in livelli separati aumenta il   manutenibilità e scalabilità dell'applicazione. Lo fa per   consentire una più facile adozione delle nuove tecnologie che possono essere applicate a   livello singolo senza l'obbligo di riprogettare l'intera soluzione. Nel   Inoltre, le applicazioni di livello n in genere archiviano informazioni riservate in   il livello intermedio, che mantiene l'isolamento dal livello di presentazione.

Tratto da Microsoft sito web .

Se capisco la domanda, allora mi sembra che l'interrogatore stia davvero chiedendo "OK, quindi il livello 3 è ben compreso, ma sembra che ci sia un mix di clamore, confusione e incertezza su ciò che 4- livello, o per generalizzare, significano architetture di livello N. Quindi ... qual è la definizione di livello N che è ampiamente compresa e concordata? & Quot;

In realtà è una domanda abbastanza profonda, e per spiegare perché, devo andare un po 'più a fondo. Abbi pazienza.

La classica architettura a 3 livelli: database ", logica aziendale" e presentazione, è un buon modo per chiarire come onorare il principio di separazione delle preoccupazioni. Vale a dire, se voglio cambiare il modo in cui "gli affari" vuole servire i clienti, non dovrei guardare attraverso l'intero sistema per capire come farlo, e in particolare, le decisioni sui problemi aziendali non dovrebbero essere sparse volenti o nolenti attraverso il codice.

Questo modello ha funzionato bene per decenni ed è il classico modello "client-server". Passa rapidamente alle offerte cloud, in cui i browser Web sono l'interfaccia utente per un insieme di utenti ampio e distribuito fisicamente e uno finisce per dover aggiungere servizi di distribuzione del contenuto, che non fanno parte della classica architettura a 3 livelli (e che devono essere gestiti a pieno titolo).

Il concetto generalizza quando si tratta di servizi, microservizi, come vengono distribuiti dati e calcolo e così via. Il fatto che qualcosa sia o meno un "livello" dipende in gran parte dal fatto che il livello fornisca o meno un'interfaccia e un modello di distribuzione ai servizi che si trovano dietro (o sotto) il livello. Quindi una rete di distribuzione di contenuti sarebbe un livello, ma un servizio di autenticazione non lo sarebbe.

Ora, vai a leggere altre descrizioni di esempi di architetture di livello N con questo concetto in mente e inizierai a capire il problema. Altre prospettive includono approcci basati sul fornitore (ad es. NGINX), bilanciamento del carico sensibile al contenuto, isolamento dei dati e servizi di sicurezza (ad es. IBM Datapower), tutti i quali possono o meno aggiungere valore a una determinata architettura, distribuzione e casi d'uso.

Sono consapevole che N-Tier separa la logica aziendale, l'accesso client e i dati l'uno dall'altro utilizzando macchine fisiche separate. La teoria è che uno di essi può essere aggiornato indipendentemente dagli altri.

Le applicazioni dati di livello N sono applicazioni dati separate in più livelli. Chiamate anche "applicazioni distribuite" e "applicazioni a più livelli", " Le applicazioni di livello n separano l'elaborazione in livelli discreti distribuiti tra il client e il server. Quando sviluppi applicazioni che accedono ai dati, dovresti avere una chiara separazione tra i vari livelli che compongono l'applicazione.

E così via in http://msdn.microsoft.com/en- us / library / bb384398.aspx

Quando si costruisce il solito MCV (un'architettura a 3 livelli) si può decidere di implementare l'MCV con interfacce a doppio deck, in modo tale da poter effettivamente sostituire un determinato livello senza dover modificare nemmeno una riga di codice.

Vediamo spesso i vantaggi di questo , ad esempio in scenari in cui si desidera poter utilizzare più di un database (nel qual caso si dispone di una doppia interfaccia tra controllo e dati- strati).

Quando lo metti sul View-layer (presentazione), puoi (tenere premuto !!) sostituire l'interfaccia USER con un'altra macchina, automatizzando così l'input REAL (!!!) - e puoi quindi eseguire noiosi test di usabilità migliaia di volte senza che nessun utente debba toccare e ri-toccare e ri-toccare nuovamente le stesse cose più e più volte.

Alcuni descrivono tale architettura a 3 livelli con 1 o 2 doppie interfacce come 4 livelli o 5 livelli , implicitamente implicito le doppie interfacce.

Altri casi includono (ma non sono limitati a) il fatto che tu, in caso di sistemi di database semi-o-completamente replicati, potresti praticamente considerare uno dei database come il "master", e quindi tu avrebbe un livello comprendente il master e un altro comprendente il database slave.

Esempio mobile

Pertanto, il multi-tier - o N-tier - ha in effetti alcune interpretazioni, mentre sicuramente mi atterrei ai livelli 3 + + extra che comprendono sottili dischi di interfaccia incastrati tra abilitare detti scambi di livelli e, in termini di test (particolarmente utilizzati su dispositivi mobili), è ora possibile eseguire test utente sul software reale, simulando un tocco degli utenti in modi che la logica di controllo non può distinguere da un vero utente toccando. Questo è quasi fondamentale nella simulazione di test utente reali , in quanto è possibile registrare tutti gli input dall'OTA utenti e quindi riutilizzare lo stesso input quando si eseguono test di regressione.

Quando parliamo di livelli, generalmente parliamo di processi fisici (con spazio di memoria diverso).

Pertanto, nel caso in cui i livelli di un'applicazione siano distribuiti in processi diversi, tali processi differenti saranno livelli diversi.

  

Ad esempio, in un'applicazione a 3 livelli, il livello aziendale comunica con Mainframe (processo separato) e parla con il servizio di reporting (processo separato), quindi l'applicazione sarebbe a 5 livelli.

Quindi, il nome generico è n-tier.

da https: // docs. microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

Un'architettura di livello N divide un pneumatici di applicazione in pneumatici logici e livelli fisici principalmente e loro sono divisi in sottoparti. inserisci qui la descrizione dell'immagine

I livelli sono un modo per separare le responsabilità e gestire le dipendenze. Ogni livello ha una responsabilità specifica. Un livello superiore può utilizzare i servizi in un livello inferiore, ma non viceversa.

I livelli sono fisicamente separati, in esecuzione su macchine separate. Un livello può chiamare direttamente un altro livello o utilizzare la messaggistica asincrona (coda messaggi). Sebbene ogni livello possa essere ospitato nel proprio livello, ciò non è necessario. Diversi livelli potrebbero essere ospitati sullo stesso livello. La separazione fisica dei livelli migliora la scalabilità e la resilienza, ma aggiunge anche la latenza dalla comunicazione di rete aggiuntiva.

Un'applicazione tradizionale a tre livelli ha un livello di presentazione, un livello intermedio e un livello di database. Il livello intermedio è facoltativo. Le applicazioni più complesse possono avere più di tre livelli. Il diagramma sopra mostra un'applicazione con due livelli intermedi, incapsulando diverse aree di funzionalità.

Un'applicazione di livello N può avere un'architettura di livello chiusa o un'architettura di livello aperta:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

Un'architettura a livello chiuso limita le dipendenze tra i livelli. Tuttavia, potrebbe creare traffico di rete non necessario, se un livello passa semplicemente le richieste al livello successivo.

Martin Fowler dimostra chiaramente:

La stratificazione è una delle tecniche più comuni utilizzate dai progettisti di software rompere un complicato sistema software. Lo vedi nelle architetture delle macchine, dove i livelli discendono da un linguaggio di programmazione con chiamate del sistema operativo nei driver di dispositivo e nei set di istruzioni della CPU e nelle porte logiche all'interno dei chip. La rete ha il livello FTP su TCP, che è su IP, che è acceso cima di Ethernet.

Quando si pensa a un sistema in termini di livelli, si immaginano i principali sottosistemi nel software organizzato in una forma di torta a strati, dove ogni strato poggia su uno strato inferiore. In questo schema il livello superiore utilizza vari servizi definito dal livello inferiore, ma il livello inferiore non è a conoscenza del livello superiore. Inoltre, ogni strato di solito nasconde i suoi strati inferiori dagli strati sopra, quindi il livello 4 utilizza i servizi del livello 3, che utilizza i servizi del livello 2, ma il livello 4 non è a conoscenza del livello 2. (Non tutte le architetture di stratificazione sono opache come questa, ma la maggior parte sono & # 8212; o meglio la maggior parte sono per lo più opachi.)

La suddivisione di un sistema in livelli presenta numerosi vantaggi importanti.

& # 8226; Puoi capire un singolo strato come un insieme coerente senza saperlo molto sugli altri strati. Puoi capire come costruire un servizio FTP su TCP senza conoscere i dettagli di come funziona Ethernet.

& # 8226; Puoi sostituire i livelli con implementazioni alternative dello stesso servizi di base. Un servizio FTP può essere eseguito senza modifiche su Ethernet, PPP, o qualunque cosa usi una società via cavo.

& # 8226; Riduci al minimo le dipendenze tra i livelli. Se la società via cavo cambia il suo sistema di trasmissione fisica, a condizione che facciano funzionare l'IP, non lo facciamo modificare il nostro servizio FTP.

& # 8226; I livelli sono buoni posti per la standardizzazione. TCP e IP sono standard perché definiscono come dovrebbero funzionare i loro layer.

& # 8226; Una volta creato un livello, è possibile utilizzarlo per molti servizi di livello superiore. Pertanto, TCP / IP viene utilizzato da FTP, telnet, SSH e HTTP. Altrimenti, tutti questi protocolli di livello superiore dovrebbero scrivere i propri protocolli di livello inferiore. Dalla biblioteca di Kyle Geoffrey Passarelli

La stratificazione è una tecnica importante, ma ci sono degli aspetti negativi.

& # 8226; I livelli racchiudono bene alcune cose, ma non tutte. Di conseguenza a volte ottenere cambiamenti a cascata. Il classico esempio di ciò in un'impresa a più livelli l'applicazione sta aggiungendo un campo che deve essere visualizzato sull'interfaccia utente, deve essere nel database e quindi deve essere aggiunto a tutti i livelli in mezzo.

& # 8226; Livelli aggiuntivi possono danneggiare le prestazioni. Ad ogni livello le cose in genere devono essere trasformato da una rappresentazione all'altra. Tuttavia, l'incapsulamento di una funzione sottostante spesso ti dà maggiori guadagni di efficienza di compensare. Un livello che controlla le transazioni può essere ottimizzato e renderà quindi tutto più veloce. Ma la parte più difficile di un'architettura a strati è decidere quali strati avere e quale dovrebbe essere la responsabilità di ciascun livello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top