Stiamo sviluppando un sistema con un'architettura a microservizi grossolana. Abbiamo un'API che utilizza i controller e la logica di back-end con il repository Entity-Framework e diversi tipi di client che utilizzano questa API, il tutto in dotnet, quindi, typesafe.
Abbiamo bisogno di utilizzare una sorta di oggetti di trasferimento dati per la comunicazione tra l'API e i client. I client utilizzano le chiamate REST. Tuttavia, i nostri controllori devono nascondere alcune proprietà delle entità per:
-
diversi client (ad esempio metadati dell'entità per i client Web e nessun metadato per i client mobili)
-
diverse azioni del controller (ad esempio
/Users/
restituisce un elenco diUser
DTO con solo nome e cognome, mentre/Users/{id}
restituisce i dettagli dell'utente.) -
diversi metodi REST (ad esempio, una
Post
richieste non avrebbe i timestamp in quanto è stata creata lato server)
La mia domanda è: quale sarebbe un buon design per la riusabilità? La migliore pratica è la creazione di nuove classi per tutte le richieste / risposte? Non vorremmo usare oggetti dinamici. Ho pensato al pattern Builder, ma non sono sicuro se questo si adatta qui.