" ViewModel Behavior"的定义是什么?

时间:2015-08-14 02:46:32

标签: c# asp.net-mvc design-patterns dto asp.net-mvc-viewmodel

我一直在阅读DTO和Viewmodels之间的区别,其中主要的一个是Viewmodels中存在的行为,而DTO只是通过层传递数据,但没有明确说明就我所读的行为而言。

Viewmodels可以将属性中传递的数据从DTO转换为以某种方式格式化某个视图,并且WPF事件也可以添加到VM中,这可以丰富它们的目的。那究竟是什么"行为"意味着这个案子?感谢。

1 个答案:

答案 0 :(得分:4)

正如您将阅读的那样,DTO是一个“数据传输对象”。

松散地说Data是对象的一个​​方面,另一个是Behavior'. 'Behavior,只是松散地说一组相关的动作(方法)和作用于Data的事件。

因此,对象是某些数据的容器,以及与该数据相关的一系列行为。 DTOsViewModels都是对象,但它们在生活中有不同的目的,因此对它们所包含的行为有不同的强调。

DTO仅“关注”例如进程边界,应用程序层或网络之间的Transporting数据。

结果DTOs通常几乎没有任何行为,因为行为是行动,只有当我们想要对数据做某事时,行动才有用。

由于运输/序列化具有运输成本,我们通常只希望这些DTO是精益和平均值。

然而,一旦DTO落在它的目的地,我们通常会想要对它所包含的数据做些什么。因此,我们将数据从DTO中剥离出来,非常感谢您在此处完成工作,并将其填入ViewModel,以便我们可以通过行为以某种方式与数据进行交互(方法和事件)通常通过一些UI。

因此,行为就像在编辑/保存时格式化值,根据propertyA中更新的值触发propertyB中的更改等等。

INotifyingPropertyChanged(INPC)界面通常会在ViewModel上实施,以帮助解决此问题。

因此,行为只是与数据交互的选项(属性,方法,事件),ViewModels具有此功能,因为这是我们为数据构建视图,与数据交互的内容。另一方面,DTO经常/通常没有(很多)行为,因为它们的功能是传输而不是交互。