Innanzitutto, prima che qualcuno urli stupido, ho avuto difficoltà a riassumerlo in un titolo semplice. Un altro titolo potrebbe essere stato "Qual è la differenza tra un modello di dominio e un modello MVC?" o "Cos'è un modello?"
Concettualmente, ritengo che un modello sia i dati utilizzati dalle viste e dal controller. Oltre a ciò, sembra che ci siano molte opinioni divergenti su ciò che costituisce il modello. Che cos'è un modello di dominio, rispetto a un modello di app, rispetto a un modello di visualizzazione, rispetto a un modello di servizio, ecc.
Ad esempio, in una recente domanda che ho posto sul pattern del repository, mi è stato detto di punto in bianco che il repository fa parte del modello. Tuttavia, ho letto altre opinioni secondo cui il modello dovrebbe essere separato dal modello di persistenza e dal livello di logica aziendale. Dopotutto, il pattern Repository non dovrebbe separare il metodo di persistenza concreta dal modello? Altre persone dicono che c'è una differenza tra il modello Domain e il modello MVC.
Facciamo un semplice esempio. AccountController incluso nel progetto predefinito MVC. Ho letto diverse opinioni secondo cui il codice account incluso è di cattivo design, viola SRP, ecc. Ecc. Se si progettasse un modello di appartenenza "corretto" per un'applicazione MVC, quale sarebbe?
Come separereste i servizi ASP.NET (provider di appartenenza, provider di ruoli, ecc.) Dal modello? O lo faresti affatto?
Per come la vedo io, il modello dovrebbe essere "puro", magari con logica di validazione .. ma dovrebbe essere separato dalle regole aziendali (diverse dalla validazione). Ad esempio, supponiamo che tu abbia una regola aziendale che dice che qualcuno deve essere inviato via email quando viene creato un nuovo account. A mio avviso, questo non appartiene veramente al modello. Allora da dove viene?
Qualcuno vuole far luce su questo problema?