Sto lavorando a un progetto .NET con, che è iniziato come un prototipo che ora deve essere scalato. Abbiamo lo stack ASP.NET MVC con Entity Framework (prima il codice).
Mi piacerebbe sapere come ridimensionarlo in una "architettura corretta" con API, repository che gestisce la cache e così via probabilmente.
Nota : Non sto cercando una discussione (che non è destinata a succedere su questo sito), ma solo come questo è solitamente risolto.
Situazione oggi:
Abbiamo un sito web, un progetto di servizio, un progetto di modello e un progetto di database:
Quindi,inpratica,ilnostrositoWebutilizzal'assemblyServizio,ModelloeDatabase.IlserviziorestituisceglioggettiModel,cherecuperadall'utilizzodirettosuContext.cs.
Quindi,inpratica,potremmoadesempiochiamareCustomerService
nelprogettoServizio,chederivadaICustomerService
dalprogettoModello.QuestochiamerebbedirettamenteContext
nelprogettoDatabase,chequindirestituiràunoggettoCustomer
dalprogettoModello.
Problemiprincipaliconesperienzaoggi:
- Lalogicaaziendale,lalogicadimemorizzazionenellacacheelalogicadeldatabasenonsonoseparate,maunagrandepilainunservizio
- Impossibileutilizzarefacilmenteunnuovocaching,databaseosimili.
- UnsaccodiproblemidiincoerenzaconglioggettiDB,collegati/distaccatidirettamentedaEntityFramework
Ilmiomododipensare:
Stavoconsiderandoun'architetturacomequesta:
Dove:
- L'API avrebbe i suoi modelli di visualizzazione che funzionano come le nostre risorse che il consumatore dell'API si aspetta
- Il livello di servizio consentirebbe al repository di gestire tutte le attività del database.
- Saremo in grado di decorare gli oggetti del modello con la memorizzazione nella cache
Ma questo mi lascia un sacco di domande:
- Questa architettura ha persino un senso remoto?
- Quali oggetti verrebbero iniettati dove? Un servizio potrebbe iniettare un repository quindi un
CustomerRepository
che deriva da unIRepository
? Come viene effettivamente effettuata / chiamata la memorizzazione nella cache? - Questo mi lascia con 3 rappresentazioni di un oggetto. Modello, viewmodel API e viewmodel del sito web - sembra un po 'di tempo
- Dove posso trovare alcuni esempi a riguardo che mi aiuteranno?