Dov'è il posto migliore per convertire JSON in oggetti?

2

Ho un Data Access Layer che usa un'API json.

Se la struttura del programma è simile a:

    Controller
        |
 Data Access Layer

È meglio convertire le stringhe di risposta in oggetti nel livello di accesso ai dati e restituirli come tipi al controller

o

Devo restituire le stringhe al controller, quando effettua richieste e deserializzare la stringa json lì?

Ho pensato che se dovessi collegare una nuova API al programma, passare gli oggetti al Data Access Layer nasconderà il fatto che sto comunicando tramite json. Tuttavia, mi rendo anche conto che avere un metodo come, nel livello di accesso ai dati:

public Foo Get(Bar bar)

dovrà serializzare l'oggetto su json, effettuare la richiesta e quindi deserializzare nuovamente su un oggetto. Questo chiaramente infrange il principio della responsabilità unica.

    
posta Joe Dawtry 17.05.2017 - 17:07
fonte

1 risposta

4

"Data Access Layer" non è forse il termine giusto, ma penso che sia il posto giusto.

Dire che ho una classe di repository che è implementata con un database. Ha una tonnellata di metodi get, update, process etc che essenzialmente memorizzano e recuperano oggetti dati.

Ora un consulente altamente retribuito afferma che è necessario spostare tutto in servizi nano basati su cloud con agile (tm).

Quindi ottengo l'interfaccia per il repository e scrivo una nuova implementazione che chiama un'api, che esegue il repository originale e restituisce il risultato.

Tutto bene e dandy, l'interfaccia nasconde l'implementazione dal codice che consuma.

Il fatto che ogni implementazione sia strettamente accoppiata a HttpClient, JsonSerialiser o MsSqlClient è meno importante.

Sebbene non sia impossibile considerare un'implementazione in cui queste cose sono racchiuse in interfacce e iniettate. Hanno già un livello di astrazione sotto forma di repository.

L'unica cosa strana è nominare. Ora ho un repository che probabilmente avrei chiamato un servizio se avessi scritto il contrario.

Ma probabilmente questo è un motivo per smettere di chiamare MyObjectService.

    
risposta data 17.05.2017 - 17:44
fonte

Leggi altre domande sui tag