In node.js generalmente utilizzo solo tre livelli.
Livello dati:
Un semplice livello che parla direttamente all'origine dati. È solo un lavoro che estrae in modo efficiente i dati dall'origine e scrive su di esso. L'origine dati può essere qualsiasi cosa, un endpoint TCP, un endpoint HTTP, un database, un filesystem, ecc.
Livello dominio:
Il livello dell'oggetto dominio. Questo è simile alla tua "M" in MVC. È una rappresentazione a oggetti di un oggetto dominio. Ha metodi di costruzione, manipolazione, validazione e altra logica.
Si noti che un singolo oggetto dominio può comunicare con diversi oggetti dal livello dati e che diverse viste possono trasformare un oggetto dominio.
Visualizza livello:
La vista prende un oggetto dominio e si trasforma in un modo facilmente stampabile. Ad esempio, nel livello vista, converto un timestamp in una stringa leggibile dall'uomo o eseguo la conversione della lingua i18n.
Fa anche qualsiasi altra logica di visualizzazione. Generalmente hai più oggetti di visualizzazione per un singolo oggetto di dominio.
Ovviamente converte anche i dati dall'oggetto dominio nel formato desiderato, sia esso binario, xml, json, html, alcuni protocolli arbitary TCP, testo normale, csv, ecc.
Livello IO
In genere hai anche bisogno di una qualche forma di IO layer che dialoghi con gli altri livelli.
vale a dire. il livello IO
- decomprime l'input
- chiama l'oggetto dominio corretto da dati o istanza di un oggetto dominio
- passa l'istanza di dati / dominio attraverso il livello di vista
- convoglia le informazioni non elaborate restituite dal livello vista (html / json / binary / ...) sull'output
Applicazioni multiple
Ora una singola applicazione ha questi tre livelli. Se avessi un sito Web dinamico, avrei questi tre livelli sul server e questi tre livelli sul client.
Se avessi la mia unica fonte di dati per parlare, allora quell'origine dati remota userebbe anche questi tre livelli, avrebbe i propri oggetti di dominio, il proprio livello di dati sulle proprie origini dati e il proprio livello di vista che altri i servizi parlano quando mi usano come fonte di dati.
Immagine carina
Fonte immagine