Dove inserire il codice per la deserializzazione XML: livello di business logic o livello di accesso ai dati?

0

Ho un'applicazione web (ASP.NET Core / C #) con 3 livelli (web / presentazione, logica aziendale e accesso ai dati).

Sto utilizzando Entity Framework per recuperare un record da un database SQL Server che viene successivamente associato al mio oggetto modello. Una delle colonne recuperate contiene una stringa XML in cui ho bisogno di estrarre alcuni valori e mapparli ad alcune proprietà del mio oggetto Model.

Ovviamente il recupero del record del database avviene nel livello di accesso ai dati; ma dovresti inserire l'analisi dalla stringa XML anche nel livello di accesso ai dati (dato che si tratta di estrarre dati) o preferiresti invece posizionarlo nel livello della logica aziendale (dal momento che il livello di accesso ai dati dovrebbe trattare solo con il database)?

    
posta Dario 11.07.2017 - 10:38
fonte

2 risposte

2

Definitely Data Access Layer.
Il motivo per cui, non ha nulla a che fare con quanto spesso cambierà la struttura di xml.

Il fatto che una delle colonne contenga dati serializzati come xml sono i dettagli di implementazione del livello di accesso ai dati.
Il livello aziendale non ha bisogno di preoccuparsi di come i dati vengono salvati nel database.

Il tuo livello aziendale dovrebbe introdurre un'astrazione del metodo di recupero in cui il metodo restituirà oggetti dati già serializzati e pronti per l'uso.

MyData GetDataById(int id);

Quindi il tuo Data Access Layer lo implementerà.

    
risposta data 11.07.2017 - 12:54
fonte
0

Chiedi:

but would you place the parsing from the XML string in the data access layer too (since it's a matter of extracting data) or would you rather place it into the business logic layer (since the data access layer should only deal with the database)?

Ora poniti un'altra domanda:

L'analisi XML contiene qualsiasi logica aziendale che potrebbe cambiare frequentemente o protegge eventuali invarianti del tuo modello?

  • Se non : posizionalo lungo il livello di accesso ai dati, poiché, nella mia lettura, questa preoccupazione appartiene al livello di manipolazione / preparazione dei dati.

  • Se è così : mettilo a livello aziendale.

Vale la pena ricordare: inizia sempre semplice e aggiungi complessità più avanti quando è necessario.

    
risposta data 11.07.2017 - 10:43
fonte

Leggi altre domande sui tag