asp.net-mvc – 视图模型和数据传输对象之间的区别是什么?
我把这个问题基于Fowler PoEAA。由于你熟悉这个文本,ASP.NET MVC中使用的ViewModel不是DTO?为什么或者为什么不?谢谢。
解决方法
它们提供相似的目的(封装应用程序的另一层的数据),但是它们有不同的原因。
> DTO的目的是减少应用层之间的呼叫数,特别是当那些呼叫是昂贵的(例如分布式系统)时。 DTO几乎总是可序列化的,并且几乎不包含任何行为。 例如,您正在开发电子商务网站。 CreateCustomer和AddCustomerAddress在数据库级别是单独的操作,但是出于性能原因,您可能希望将其数据聚合到NewCustomerWithAddressDto中,以便您的客户端只需要进行一次往返服务器,并且不需要关心服务器可能正在做一堆不同的事情与数据包。 例如,在同一个电子商务应用程序中,您的CustomerModel是在“新客户”视图上显示的错误“形状”。对于初学者,您的视图有两个表单字段供您的用户输入和确认其密码,而您的CustomerModel不包含密码字段!您的NewCustomerViewModel将包含这些字段,并且根据MV *的风格,可能负责一些表示逻辑(例如显示/隐藏视图的部分)和基本验证(例如,确保两个密码字段匹配)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么工作线程使我的ASP.NET生成器在睡眠期间遇到ThreadAb
- 允许未经身份验证的用户使用ASP.Net表单身份验证访问特定页
- asp.net – 如何禁用.NET事件日志警告?
- asp.net-mvc – 什么可能导致一个503服务不适用于asp.net m
- asp.net – TextBox或Html区域中的换行符
- ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?
- asp.net-mvc – TempData keep()vs peek()
- asp.net-core – 在将Swashbuckle用于网络核心web api项目时
- asp.net-mvc – 使用带有剃刀的html选择框
- asp.net-mvc – ASP.NET MVC可以生成具有小写名称和id属性的
- asp.net – 你可以从请求变量确定时区吗?
- 我如何设置我的ASP.NET项目来查找我的文件?
- asp.net – 如何避免重置IIS以确保调试器附加*正
- Intranet ASP.NET网站的Windows身份验证和重新出
- asp.net-mvc – 使用ASP.NET MVC响应HTTP HEAD请
- 在IIS 7.5上运行ASP Classic
- asp.net-mvc – 为新的网上商店项目选择什么(在A
- asp.net – 支持部署到Windows Azure的论坛软件
- asp.net-mvc – ASP.NET MVC QueryString默认覆盖
- 如何通过给定的项目值显示Motobit Multi.Diction