Quale livello dovrebbe comunicare a terzi?

1

Abbiamo un'architettura a più livelli

UI --> Application Layer --> Business Layer --> DB

C'è un servizio di terze parti con cui comunichiamo. Se il livello aziendale comunica al servizio di terze parti, ha il vantaggio di rendere leggero il nostro livello di applicazione e allo stesso tempo di passare i dati attraverso un livello aggiuntivo. Quale applicazione o azienda a livello deve comunicare a tale servizio di terzi e Perché?

    
posta Vineet Singla 21.11.2017 - 10:38
fonte

4 risposte

3

the-onion-architecture definisce le interfacce per i servizi esterni nel loro livello di dominio (lo chiami Busines-Layer) e l'implementazione del servizio in un livello di servizio separato. In questo modo, busineslayer e altri servizi possono utilizzare tutte le interfacce di servizio senza dipendere dall'implementazione del servizio.

la tua architettura sarà simile a questa:

 UI --> Application Layer --> Business Layer --> Service-Interfaces
 Service-Implementation --> Business Layer --> Service-Interfaces

cioè.

 WebOrder-Service-Implementation --> Order Business Layer --> Database Service-Interface

Quindi per rispondere alla tua domanda:

> Which layer should communicate to third party?

Solo l'implementazione del servizio di terze parti e nessun altro.

Tutti gli altri moduli comunicano solo con l'interfaccia di servizio di terze parti

    
risposta data 22.11.2017 - 09:42
fonte
1

Facile risposta:

Se la comunicazione con terze parti è specifica per l'applicazione (specifica di utilizzo specifica), inseriscila nel livello applicazione.

Se la comunicazione con terze parti è indipendente dall'applicazione corrente e la comunicazione dovrebbe avvenire ogni volta che viene chiamato il livello del dominio, metterlo nel livello dominio (livello aziendale).

Suggerisco inoltre di includere il codice di terze parti. Quindi dipende solo dal tuo codice.

    
risposta data 26.11.2017 - 23:14
fonte
0

Il livello aziendale richiede informazioni da terzi per funzionare correttamente? Sto assumendo così. Quindi la domanda è se il livello dell'applicazione deve recuperare i dati e passarli al livello aziendale o se il livello aziendale deve semplicemente recuperarli esso stesso.

Il mio pensiero è che mentre il livello del database non dovrebbe mai recuperare nulla che non provenga dal database (con possibile eccezione della connessione), il livello aziendale non è limitato in questo senso. Se il livello aziendale ha bisogno delle informazioni fornite dalla terza parte e il livello dell'applicazione non ne ha bisogno, non ha senso che il livello dell'applicazione passi semplicemente.

D'altra parte, se il livello dell'applicazione e il livello aziendale necessitano entrambi delle informazioni (e sarebbe saggio assicurarsi che ciò sia corretto comportamento), il livello applicazione dovrebbe caricarlo e passarlo a il livello aziendale, se necessario. Altrimenti, lasciare che il livello aziendale effettui le proprie chiamate ai servizi di terze parti.

    
risposta data 21.11.2017 - 14:57
fonte
0

Nella nostra architettura, vediamo i servizi come repository, rendendoli peer ad altri componenti nel livello dati. Il livello aziendale è responsabile del recupero dei dati necessari e dell'agente su di esso. Richiama i repository (oi servizi) per ottenere ciò di cui ha bisogno e restituisce i risultati ai metodi di livello applicazione chiamante.

    
risposta data 21.11.2017 - 16:18
fonte

Leggi altre domande sui tag