Sto avendo seri dubbi sulla progettazione della mia applicazione Web.
Volevo separare la logica aziendale dall'interfaccia, quindi ho creato un'API Web che gestisce tutte le richieste al database.
È un'API Web ASP.NET con framework Entity e un'unità di lavoro e un modello di repository generico. Finora è andato tutto bene.
PROBLEMA
Dove ho bisogno di aiuto è non riesco a capire un modo efficiente di condividere oggetti tra l'API e l'applicazione.
Non voglio serializzare direttamente l'oggetto entità, ho pensato che sarebbe stata una cattiva pratica perché se il modello di entità cambia, potrei finire con la serializzazione di oggetti di grandi dimensioni senza motivo.
Come è implementato ora
Poiché la mia interfaccia è l'applicazione Web ASP.NET in C # e la mia API è in C #, ho creato una libreria comune con la definizione di tutte le mie classi che voglio condividere tra di loro.
So che la soluzione non funzionerà quando svilupperò un'app Android, dovrò creare di nuovo le mie lezioni in Java, ma questo non è il mio problema più grande.
Il problema è che mi sento come se stessi convertendo sempre i miei oggetti.
ESEMPIO
Ecco un esempio del mio flusso di lavoro:
Comincio con un modello con tutti gli oggetti e le annotazioni dei dati per il mio modulo, quindi l'utente POST quel modello su un controller.
Nel controller devo convertire questo modello in una classe nella mia libreria comune quindi inviare quell'oggetto alla mia API.
Quindi un controller nella mia API cattura la chiamata e converte quell'oggetto in un oggetto entità per aggiornare il database.
Quindi ho 3 lezioni
- Il modello per la vista con tutte le annotazioni dei dati per la convalida (client)
- Le classi di librerie comuni per condividere gli oggetti (DLL)
- Le classi di entità (API)
Ho la sensazione di fare qualcosa di veramente sbagliato. C'è qualcosa di più elegante? Vorrei assicurarmi di avere una buona soluzione a questo problema prima che il progetto diventi troppo grande.