gpt4 book ai didi

asp.net-mvc - MVC 范式中的模型、域、存储库和服务之间有什么区别?

转载 作者:行者123 更新时间:2023-12-02 14:07:22 25 4
gpt4 key购买 nike

模型、域和存储库本质上是同一件事吗?

最佳答案

没有。

将领域模型与其包含的存储库区分开来的第一种方法是考虑存储库的作用。

本质上,存储库只是封装了一大块数据访问代码,以公开给定接口(interface)的方式,以便程序员可以轻松地互换不同的存储方法,例如,独立于数据库问题来测试其他代码。

相比之下,域模型保存给定应用程序所需的所有存储库。因此,很明显它是一种非常不同的野兽。

一只更大的野兽。

域模型还将包括其他代码和类,例如通过 Controller 传递给 View 的模型(在 MVC 范例中)。

一个学派坚持认为领域模型应该位于它自己的类库中。这种思想流派反对在默认的 MVC 项目中使用 Model 文件夹。我同意这一点并且通常会删除它。

领域模型对领域进行建模。它与传递给每个 View 的模型不同,模型实际上只表示 View 所需的数据,而不是对给定的业务问题进行建模,包含存储库和服务等。

我认为你的问题是一个很好的问题,因为它解决了一个如果你不知道其背后的想法就很容易感到困惑的问题。

先有鸡还是先有蛋?答:都不是。首先是问题。

DDD:

这些概念是领域驱动设计的一部分,与其说是关于给定的技术实现,不如说是关于如何标准化需要转换为软件的复杂领域的理解和建模的一组指南。

MVC 的一大优点是它允许您使用领域驱动设计之类的东西。相比之下,在 ASP.NET Web 表单中,当您尝试应用良好的设计原则时,受到的限制要大得多。

即,MVC 允许您设计应用程序,以便将域的表示封装在 MVC 的 M 位中。

归根结底,M 位能走多远取决于您。它可以仅位于 Models 文件夹中,或者您可以将其重构到自己的类库中,并根据您的喜好进行重构、实现 DDD 最佳实践或任何您想要的其他内容。

关于asp.net-mvc - MVC 范式中的模型、域、存储库和服务之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870979/

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