2

我知道在 mvc 中最好使用存储库模式和工作单元类作为 ASP.net MVC 项目中的设计模式。(服务层中的业务逻辑。)

我的问题是,我是 Microsoft 引入的 MVC 4 的新手。我是否也可以在 MVC 4 环境中应用上述模式(存储库和工作单元),以该设计模式开始我的项目是否是好方法。

在 MVC 中,我是否需要满足大型 MVC 项目的另一种模式。

任何人都可以了解 MVC 4,请对此高度赞赏。

4

3 回答 3

7

“在 mvc 中,最好使用存储库模式和工作单元类”——这是非常值得怀疑的,而说“被认为是当今使用的最佳模式之一”之类的话是完全错误的:模式仅在某些上下文中是好还是坏,没有它,您无法真正判断它们是否是不错的选择。

从“我应该使用哪些模式”的问题开始,而不首先考虑您需要编写的应用程序的细节,这是创建过度设计的应用程序的可靠方法。

Repository 和 UoW 已经被领域驱动设计所普及,如果你沿着这条路走下去,它们会很有意义。DDD 对于某些应用程序来说是极好的方法,但我认为这不是大多数应用程序。许多网络应用程序只是 CRUD 应用程序,它们不能从 DDD 中受益,也不能将对实体的每次访问都包装在存储库中——例如,在这里选择微 ORM 通常是一种更明智的方法。

如果您仍然确定您的应用程序确实需要这种方法,而不是自己实现所有这些东西,我建议使用像NHibernate这样的框架,因为您需要的不仅仅是 UoW 和 repo - 它们将需要身份映射实现等。 NHibernate 提供了很多开箱即用的东西(例如,它的Session类型实际上是 UoW 的出色实现以及更多),并涵盖了许多细节,只有在您了解实现自己的版本的细节后才会发现这些细节是必需的。实体框架在这里也可能是一个不错的选择,尽管它不是我最喜欢的。

当然,编写自己的代码是扩展知识的好方法,但如果您需要将其用于生产应用程序,则通过选择现有实现将节省大量时间、金钱和麻烦。

于 2013-04-28T07:14:04.663 回答
5

仅仅因为每个教程中都显示了存储库模式,并不意味着它是解决 MVC 世界中问题的事实标准。

首先,您需要了解应用程序的复杂性。存储库可能会给您的应用程序增加不必要的复杂性。顺便说一句,您还没有提到您将如何与数据库交谈。如果您计划使用任何 ORM 工具,例如( Nhibernate,实体框架),那么您已经有了一个很好的抽象。为什么还需要一个抽象级别。

关于是否使用存储库模式存在很多争论。这里有一些非常好的解释

我们需要存储库吗?

没有存储库的生活 - Ayende

所有著名的 ORM 工具都使用您提到的模式(工作单元和存储库)实现。

于 2013-04-28T07:05:55.223 回答
1

在 ASP.NET MVC 教程中查看在 ASP.NET MVC 应用程序中实现存储库和工作单元模式,这应该足以让您朝着正确的方向前进。

于 2013-04-28T06:56:35.257 回答