首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DTO = ViewModel?

DTO = ViewModel?
EN

Stack Overflow用户
提问于 2009-12-31 03:42:43
回答 8查看 51.1K关注 0票数 116

我使用NHibernate持久化我的域对象。为了简单起见,我使用一个ASP.NET MVC项目作为我的表示层和服务层。

我想从我的控制器类返回XML格式的域对象。在阅读了Stack Overflow上的一些帖子后,我认为DTO是一种可行的方式。然而,我也遇到了一些关于ViewModel的帖子。

我的问题是:数据传输对象和ViewModels是一回事吗?或者ViewModel是DTO的一种子模式?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-12-31 03:58:13

DTO的规范定义是没有任何行为的对象的数据形状。

ViewModels是视图的模型。ViewModels通常是来自一个或多个对象(或DTO)的完整或部分数据,外加特定于视图行为的任何附加成员(可由视图执行的方法、指示如何切换视图元素的属性等)。您可以将视图模型视为视图的所有数据加上行为。ViewModels可能会也可能不会一对一地映射到业务对象或DTO。

顺便说一句,如果某个视图模型需要来自持久化对象的数据子集,那么NHibernate projections就派上用场了。

票数 121
EN

Stack Overflow用户

发布于 2011-07-25 09:21:51

MVVM实践中的ViewModel与DTO是相同的,但ASP.NET模式中的ViewModel与DTO不同,这是因为MVVM中的ViewModel具有行为而DTO不具有行为。

票数 73
EN

Stack Overflow用户

发布于 2009-12-31 03:59:00

DTO != ViewModel

MVVM模式中,ViewModel用于将模型与视图隔离。为了表示模型,您可以使用简单的DTO类,它同样通过NHibernate映射到数据库。但是我从来没有见过一个ViewModel类被建模为DTO。ViewModel类大多有DTO没有的行为。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1982042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档