Ho avuto una discussione con alcuni colleghi e anche alcuni lead tecnici nel team intorno a questo e sono tutti per l'approccio purista MVC. Soprattutto quando il progetto si trova nei suoi stadi infantili (è facile implementare un modello che va avanti). Sono fermamente convinto che qualsiasi cosa abbia a che fare con il back-end dovrebbe essere tenuta separata da Views, Models e anche dai View-Models.
È stata presa la decisione finale di utilizzare gli oggetti considerati pass-through perché sono utilizzati ovunque, dall'interfaccia utente fino alla piattaforma back-end che gestisce la richiesta effettiva.
Ecco un esempio di ciò che verrà implementato: MVC stack < - > Piattaforma back-end < - > Puoi parlare con un database o un altro servizio di terze parti E nell'esempio precedente, un oggetto di richiesta back-end può essere realizzato a livello di controller e passato attraverso la piattaforma back-end e lì può essere adattato per soddisfare un database o un altro servizio. E quando il database / servizio di terze parti risponde, la sua risposta viene presa e adattata a uno dei nostri tipi. Questo tipo verrà quindi restituito allo stack MVC. Views e ViewModels utilizzano solo questi tipi di piattaforma back-end.
Quale ID piace vedere fatto: Mi piace che il controllore trasmetta la responsabilità a un adattatore o addirittura a un livello di servizio che è responsabile dell'acquisizione di POCO e della creazione di oggetti della piattaforma di back-end. Crea la richiesta, mandala alla piattaforma back-end. E quando risponde, adatta la risposta in una vista o in un ViewModel e invialo di nuovo al controller. Gli oggetti vengono iniettati nel controller, quindi si tratta semplicemente di passare i POCO a un altro livello per assumersi la responsabilità di creare richieste, inviarle e restituire una risposta costituita da una vista o un ViewModel.
Pro e contro. Con l'attuale implementazione, è conveniente e dato che noi (la mia azienda) possiedono il codice che va dal front-end al back-end che viene utilizzato. Fa risparmiare tempo. Che non abbiamo molto da fare. Non vedo la separazione degli strati qui.
Con l'implementazione che Id desidera vedere, credo che si avvicini un po 'di più al SoC e aggiunga un altro livello di adattamento. Questo è un po 'più di lavoro. E, da un puro punto di vista MVC, usa gli oggetti della piattaforma di back-end che vengono utilizzati nel back-end (sebbene si presumesse che questi oggetti saranno usati anche nel front-end).
Mi rendo conto che è una cosa lunga e che faccio belle foto. Scuse.
Mi piacerebbe sapere cosa avresti fatto. Cin cin.