加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 视图模型和数据传输对象之间的区别是什么?

发布时间:2020-12-15 19:32:58 所属栏目:asp.Net 来源:网络整理
导读:我把这个问题基于Fowler PoEAA。由于你熟悉这个文本,ASP.NET MVC中使用的ViewModel不是DTO?为什么或者为什么不?谢谢。 解决方法 它们提供相似的目的(封装应用程序的另一层的数据),但是它们有不同的原因。 DTO的目的是减少应用层之间的呼叫数,特别是当那
我把这个问题基于Fowler PoEAA。由于你熟悉这个文本,ASP.NET MVC中使用的ViewModel不是DTO?为什么或者为什么不?谢谢。

解决方法

它们提供相似的目的(封装应用程序的另一层的数据),但是它们有不同的原因。

> DTO的目的是减少应用层之间的呼叫数,特别是当那些呼叫是昂贵的(例如分布式系统)时。 DTO几乎总是可序列化的,并且几乎不包含任何行为。

例如,您正在开发电子商务网站。 CreateCustomer和AddCustomerAddress在数据库级别是单独的操作,但是出于性能原因,您可能希望将其数据聚合到NewCustomerWithAddressDto中,以便您的客户端只需要进行一次往返服务器,并且不需要关心服务器可能正在做一堆不同的事情与数据包。
>术语“ViewModel”意味着不同口味的MV *稍有不同,但它的目的主要是分离关注点。您的模型经常针对演示之外的某些目的进行优化,ViewModel负责将您的View与Model的实现细节分离。此外,大多数MV *模式建议使视图尽可能“哑”,因此ViewModel有时负责表示逻辑。

例如,在同一个电子商务应用程序中,您的CustomerModel是在“新客户”视图上显示的错误“形状”。对于初学者,您的视图有两个表单字段供您的用户输入和确认其密码,而您的CustomerModel不包含密码字段!您的NewCustomerViewModel将包含这些字段,并且根据MV *的风格,可能负责一些表示逻辑(例如显示/隐藏视图的部分)和基本验证(例如,确保两个密码字段匹配)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读