Repositi denominati in DDD

0

Oggi stiamo lavorando con Stored Procedures per accedere al database. Per consentire il test delle unità, abbiamo implementato un'interfaccia per ogni gruppo di stored procedure correlate, ad esempio:

ICustomerRepository
{
 GetAllCustomer();
 GetCustomerById();
 GetEnrolledCustomers();
 // etc..
}

Abbiamo in programma di implementare DDD in tutti i progetti.

La mia domanda è in quale strato DDD è meglio porre l'implementazione di queste interfacce e perché?

Considerate che è un enorme progetto di 4 anni, quindi per ora non saremo in grado di apportare modifiche al modo in cui funziona il nostro DAL. Grazie!

    
posta Uri Abramson 19.07.2016 - 07:07
fonte

2 risposte

3

L'architettura di cipolla è una delle possibili scelte quando usi DDD. Se decidi di usarlo, l'implementazione dovrebbe essere nel livello infrastruttura. È possibile avere diverse implementazioni della stessa interfaccia e iniettare quella richiesta nella propria applicazione. IMO le interfacce stesse dovrebbero trovarsi nel livello Dominio.

    
risposta data 19.07.2016 - 11:15
fonte
1

Dipende da cosa restituisce l'interfaccia. Supponendo che restituiscano entità di dominio che dovrebbero andare nel tuo livello di dominio. Le effettive implementazioni dell'interfaccia possono andare nel livello di persistenza.

Quando hai le interfacce del repository nel livello del dominio, i livelli precedenti non dipendono dal livello di persistenza. Da un punto di vista concettuale, l'idea che tu ottenga "Cliente" per ID, lo stato iscritto appartiene al tuo dominio, come farlo è un problema di persistenza.

    
risposta data 19.07.2016 - 11:07
fonte

Leggi altre domande sui tag