Zostało to raz za razem. Nie tylko jest to dość istotne dupe, ale odpowiedź jest subiektywna i argumentująca. ViewModels są odpowiedzią na DDD i koncepcję uporczywej ignorancji.
Powiedzenie, że nie używamy ViewModels jest złe oznacza ignorowanie tego, że Django i Rails oraz większość frameworków PHP ORM/MVC nie dba o te koncepcje. Czy chcesz, aby ktoś powiedział ci te wszystkie inne języki i ramy "robią to źle?".
To, czy chcesz używać ViewModels, czy nie, zależy w 100% od tego, jakie style architektury wybierasz i jakie są cele aplikacji.
To jest tak, jakby pytaniem było przeciąganie i upuszczanie widoku GridView w aplikacji WebForm? Zależy od wielu rzeczy.
Istnieje również błędne przekonanie na temat SUSZENIA, które tu masz. Czy klasy proxy z usługi WCF naruszają DRY? Czy ViewModel zawiera logikę? Podstawowym celem DRY jest brak zduplikowanej logiki w sensownym celu. Czy kilka DTO, które współdzielą obiekty obiektów, naruszają to?
Polecenie DDD dla kontekstów ograniczonych może również służyć do dobrego odczytu. Jeśli obiekt ShoppingCart musi funkcjonować inaczej w ustawieniach magazynu a witryny e-commerce, czy to oznacza, że chcesz udostępniać typy? Co się dzieje, gdy jedyną wspólną funkcją jest łączenie ceny (cena + podatek + dostawa)? Czy tworzysz klasę bazową właśnie dlatego, aby zwiększyć sprzężenie? Jakie są kompromisy w czasie/kosztach/utrzymaniu dla 100% SUCHA dla prostej metody, takiej jak GetTotal(). Czy naruszanie DRY, gdy ma to sens, faktycznie zmniejsza złożoność i ogólny koszt utrzymania twojego kodu?
Przykro mi z powodu odpowiedzi na tak wiele pytań, ale mam nadzieję, że teraz możesz zobaczyć niuanse i zawiłości zadawanego pytania. ;)
Przeprowadziłem wyszukiwanie przed opublikowaniem tego i nie mogłem znaleźć podobnych pytań.Było kilka związanych z silverlightem (ale viewmodels są tam zupełnie inne rzeczy) i trochę rzeczy związanych z szynami (być może nieco istotne, ale nie takie same). Pytam o to, ponieważ DRY jest jednym z głównych celów podejścia do szyn, na którym wzorowane jest MVC. Wydaje się, że MVC jest nieco schizofrenikiem co do zasad, które ceni czasami. –
@Mystere Man - http://stackoverflow.com/search?q=viewmodels+DRY+[asp.net-mvc] – jfar
Być może powinieneś faktycznie przeczytać wyniki. Żadne z nich nie ma zastosowania. –