Po pierwsze, zanim ktokolwiek krzyknie oszukany, ciężko mi było podsumować to w prostym tytule. Inny tytuł mógłby brzmieć „Jaka jest różnica między modelem domeny a modelem MVC?” lub „Co to jest model?”
Koncepcyjnie rozumiem, że Model to dane używane przez widoki i kontroler. Poza tym wydaje się, że istnieje wiele różnych opinii na temat tego, co składa się na model. Co to jest model domeny, model aplikacji, model widoku, model usług itp.
Na przykład w ostatnim pytaniu, które zadałem na temat wzorca repozytorium, powiedziano mi wprost, że repozytorium jest częścią modelu. Czytałem jednak inne opinie, że model powinien być oddzielony od modelu trwałości i warstwy logiki biznesowej. W końcu czy wzorzec repozytorium nie powinien oddzielać konkretnej metody trwałości od modelu? Inni twierdzą, że istnieje różnica między modelem domeny a modelem MVC.
Weźmy prosty przykład. AccountController, który jest dołączony do domyślnego projektu MVC. Czytałem kilka opinii, że kod konta jest kiepskiej konstrukcji, narusza SRP itp. Itd. Gdyby ktoś miał zaprojektować „właściwy” model członkostwa dla aplikacji MVC, co by to było?
W jaki sposób można oddzielić usługi ASP.NET (dostawca członkostwa, dostawca ról itp.) Od modelu? A może w ogóle byś?
Z mojego punktu widzenia model powinien być „czysty”, być może z logiką walidacji .. ale powinien być oddzielony od reguł biznesowych (inny niż walidacja). Na przykład, powiedzmy, że masz regułę biznesową, która mówi, że ktoś musi otrzymać e-maila, gdy zostanie utworzone nowe konto. Moim zdaniem to nie pasuje do modelu. Więc gdzie to należy?
Czy ktoś chciałby rzucić trochę światła na tę kwestię?