gpt4 book ai didi

asp.net-mvc - View 模型和数据传输对象有什么区别?

转载 作者:行者123 更新时间:2023-12-02 09:40:03 26 4
gpt4 key购买 nike

我是根据 Fowler PoEAA 提出这个问题的。鉴于您对本文的熟悉程度,ASP.NET MVC 中使用的 ViewModel 是否与 DTO 相同?为什么或者为什么不?谢谢。

最佳答案

它们具有类似的目的(为应用程序的另一层封装数据),但它们的做法不同并且出于不同的原因。

  • DTO 的目的是减少应用程序各层之间的调用次数,特别是当这些调用成本高昂时(例如分布式系统)。 DTO 几乎总是可序列化的,并且几乎从不包含任何行为。

    例如,您正在开发一个电子商务网站。 CreateCustomerAddCustomerAddress 是数据库级别的单独操作,但出于性能原因,您可能希望将其数据聚合到 NewCustomerWithAddressDto 中,以便您的客户端只需要与服务器进行一次往返,并且不需要关心服务器可能正在对数据包执行一堆不同的操作。

  • 术语“ViewModel”在不同风格的 MV* 中的含义略有不同,但其目的主要是关注点分离。您的模型经常为了演示之外的某些目的进行优化,并且 ViewModel 的责任是将您的 View 与模型的实现细节分离。此外,大多数 MV* 模式建议让您的 View 尽可能“哑”,因此 ViewModel 有时会负责表示逻辑。

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

关于asp.net-mvc - View 模型和数据传输对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1431445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com