我把这个问题建立在福勒PoEAA的基础上。鉴于您对本文的熟悉程度,ASP.NET MVC中使用的ViewModels不是与DTO相同吗?为什么或者为什么不?谢谢。
发布于 2009-09-16 07:28:33
它们服务于类似的目的(为应用程序的另一层封装数据),但它们的做法不同,原因也不同。
例如,您正在开发一个电子商务网站。CreateCustomer和AddCustomerAddress在数据库级别上是独立的操作,但出于性能原因,您可能希望将它们的数据聚合到一个NewCustomerWithAddressDto中,以便您的客户端只需要对服务器进行一次往返,而不需要关心服务器可能会对数据包执行一系列不同的操作。
例如,在同一个电子商务应用程序中,您的CustomerModel在"New Customer“视图上显示的”形状“是错误的。对于初学者来说,您的视图有两个表单字段供用户输入和确认其密码,而您的CustomerModel根本不包含密码字段!您的NewCustomerViewModel将包含这些字段,并且可能负责某些呈现逻辑(例如,显示/隐藏视图的某些部分)和基本验证(例如,确保两个密码字段匹配),这取决于您使用MV*的风格。
发布于 2009-09-16 07:18:21
目的是不同的:
data
因此,通常ViewModels包含演示文稿数据,在很多情况下类似于DTO中的内容,但有一些区别。考虑一下枚举的表示、本地化、货币、日期格式等。这是因为通常情况下,视图中不应该有逻辑。
发布于 2009-09-16 07:52:19
MVVM和MVP中的通常是非常愚蠢的对象DTO,DTO基本上只是一堆属性setter和getter。另一方面,ViewModels可以有一些行为。
拥有DTO的一个实际的积极副作用是允许更容易的序列化。如果你有一个相当复杂的对象,比如C#,你经常会发现自己不得不有选择地关闭那些你不想序列化的东西。这可能会变得相当丑陋,而DTO简化了这个过程。
https://stackoverflow.com/questions/1431445
复制相似问题