我一直在阅读DTO和Viewmodels之间的区别,其中主要的一个是Viewmodels中存在的行为,而DTO只是通过层传递数据,但没有明确说明就我所读的行为而言。
Viewmodels可以将属性中传递的数据从DTO转换为以某种方式格式化某个视图,并且WPF事件也可以添加到VM中,这可以丰富它们的目的。那究竟是什么"行为"意味着这个案子?感谢。
答案 0 :(得分:4)
正如您将阅读的那样,DTO
是一个“数据传输对象”。
松散地说Data
是对象的一个方面,另一个是Behavior'. 'Behavior
,只是松散地说一组相关的动作(方法)和作用于Data
的事件。
因此,对象是某些数据的容器,以及与该数据相关的一系列行为。 DTOs
和ViewModels
都是对象,但它们在生活中有不同的目的,因此对它们所包含的行为有不同的强调。
DTO
仅“关注”例如进程边界,应用程序层或网络之间的Transporting
数据。
结果DTOs
通常几乎没有任何行为,因为行为是行动,只有当我们想要对数据做某事时,行动才有用。
由于运输/序列化具有运输成本,我们通常只希望这些DTO
是精益和平均值。
然而,一旦DTO
落在它的目的地,我们通常会想要对它所包含的数据做些什么。因此,我们将数据从DTO
中剥离出来,非常感谢您在此处完成工作,并将其填入ViewModel
,以便我们可以通过行为以某种方式与数据进行交互(方法和事件)通常通过一些UI。
因此,行为就像在编辑/保存时格式化值,根据propertyA中更新的值触发propertyB中的更改等等。
INotifyingPropertyChanged
(INPC)界面通常会在ViewModel
上实施,以帮助解决此问题。
因此,行为只是与数据交互的选项(属性,方法,事件),ViewModels
具有此功能,因为这是我们为数据构建视图,与数据交互的内容。另一方面,DTO经常/通常没有(很多)行为,因为它们的功能是传输而不是交互。