Due progetti MVC (API e Web), ViewModel dovrebbe essere in una libreria comune o in ogni progetto?

5

Sto creando una soluzione .NET MVC che avrà due progetti Web, uno per l'API e per il Web. Alcuni modelli, come il cliente, saranno gli stessi tra i due progetti.

È meglio tenerli in una libreria web comune e fare riferimento ai due progetti web o tenerli unici per ogni progetto?

    
posta RJP 06.07.2016 - 06:58
fonte

1 risposta

4

Si è tentati di eliminare spietatamente la duplicazione nei nostri sistemi, e per ottime ragioni, ma dobbiamo sempre chiederci se si tratta di duplicazione reale o apparente .

Ciò che intendo è che a volte avremo codice che sembra identico, ma ognuno avrà il proprio motivo per cambiare, indipendentemente l'uno dall'altro. Se ritieni che il modello di visualizzazione per l'app cambierà sempre in tandem con il modello di visualizzazione per l'API, allora dovrebbero condividere gli stessi modelli di visualizzazione. Tuttavia, probabilmente scoprirai presto che il modello di visualizzazione per la tua app ha bisogno di una proprietà di cui l'API non ha bisogno, a causa della necessità di alcuni elementi dell'interfaccia utente effimera (come, ad esempio ... un elenco a discesa che contiene dati da alcuni esterni sistema che "prendi in prestito" nella tua app).

Vedo l'app e l'API come due front end diversi per gli stessi modelli di business. Devono assolutamente condividere gli stessi modelli di business (logica / dtos), ma la condivisione dei modelli di visualizzazione è, nel migliore dei casi, IMO. Se le cose sono identiche ora, è possibile condividere il codice, quindi ereditare successivamente dalle classi condivise, se si verifica una situazione in cui è necessario estendere i modelli di base. Forse il meglio di entrambi i mondi.

    
risposta data 06.07.2016 - 12:31
fonte

Leggi altre domande sui tag