abbiamo avviato un nuovo progetto in cui il back-end consiste di diversi livelli (ciascuno in un progetto diverso).
Per semplificare ne definirò alcuni:
- Project.Data - livello di dati con accesso a db
- Project.Repository - repos
- Project.Repository.Interfaces - solo interfacce di repository
- Project.WebApi - API
Il nostro team leader ha proposto che dovremmo bloccare l'accesso alle risorse tra i progetti a livello di riferimento. Ora l'unica cosa che l'API farà riferimento in questo esempio è Project.Repository.Interfaces. Lì iniettiamo interfacce usando Dependency Injection. Come ho detto, questa è una versione semplice che non include Servizi e Dtos.
L'idea alla base di questo è che WebAPI dovrebbe utilizzare solo DI per accedere alle risorse. Anche WebAPI dovrebbe avere accesso a DTO non direttamente alle entità del database. Tutto questo è grandioso, ma naturalmente ci sono alcuni problemi che sono stati riscontrati e non sono sicuro di come risolverli:
a) I pacchetti Nuget installati in Project.Repository non vengono copiati in WebAPI (eccezione di runtime relativa alla dll mancante)
b) l'uso di .NET Core CLI e dotnet watch eseguiti per avviare un progetto localmente non tengono traccia delle modifiche nei progetti figli poiché non vengono referenziati direttamente.
Vedo la visione dietro questa idea di accoppiamento sciolto, ma questo è davvero ingombrante. È un compromesso con cui devi convivere in tale situazione o c'è una soluzione per questo?
Saluti