2015-08-14 3 views
0

Я читал о различии между моделями DTO и Viewmodels, в которых основным является наличие поведения в моделях Viewmodels по сравнению с DTO, которые просто переносят данные через уровни, но четко не указано определение поведения, насколько я читать.Каково определение «поведение ViewModel»?

Viewmodels могут преобразовывать данные, переданные в свойствах из DTO для форматирования определенным образом для определенного вида, а также в событиях WPF, которые могут быть добавлены в виртуальные машины, которые могут обогатить их назначение. Так что же такое «поведение» означает в этом случае? Благодарю.

ответ

3

Как вы прочитали, DTO является «Объектом передачи данных».

Грубо говоря Data является одним из аспектов объекта, другой Behavior'. 'Behavior снова свободно говорить просто набор связанных действий (методы) и события, которые действуют на этот Data.

Таким образом, объект представляет собой контейнер для некоторых данных и кучу поведения, которые связаны с этими данными. DTOs и ViewModels - оба объекта, но они имеют разные цели в жизни и, как результат, имеют различный акцент на поведении, которое они содержат.

A DTO относится только к Transporting данных между, например, границами процессов, уровнями приложений или сетями.

В результате DTOs часто имеют малое поведение, потому что поведение - это действия и действия полезны только тогда, когда мы хотим что-то сделать с данными.

Поскольку транспорт/сериализация имеет транспортные расходы, мы обычно просто хотим, чтобы эти DTO s были скудными и средними.

Однако, как только DTO приземляется в пункте назначения, мы обычно хотим что-то сделать с содержащимися в нем данными. Таким образом, мы очищаем данные из DTO, что очень важно для хорошо выполненной работы по его получению и закладывает его в ViewModel, поэтому мы можем каким-то образом взаимодействовать с данными с помощью поведения (методов и событий), как правило, через некоторый интерфейс ,

Так поведения являются такими вещами, как форматирование значения при редактировании/сохранить, вызвав изменения в propertyB на основе обновленного значения в propertyA и т.д.

INotifyingPropertyChanged интерфейса (INPC) часто будет осуществляться на ViewModel, чтобы помочь с этим.

Так как поведение - это просто параметры для взаимодействия с данными (свойствами, методами, событиями), ViewModels имеют это, потому что это то, для чего мы создаем представления для взаимодействия с данными. DTOs, с другой стороны, часто/обычно не имеют (много) поведения, потому что их функция - это не взаимодействие.

+0

Спасибо @rism, я понял это сейчас. – CoderRoller

1

Обычно DTO - это то, что предлагает его название, простой объект без какого-либо поведения, который используется для передачи данных через границы системы. Однако цель Viewmodel - это разделение беспокойства. Ответственность модели просмотра заключается в том, чтобы отделить вас от модели. Он может выполнять множество операций, например, переключать элементы view.validation запускать некоторую пользовательскую логику, которую DTO cannot. Это ваше поведение в режиме просмотра.

Смежные вопросы