带有存储库和工作单元模式的MVC 4

本文关键字:模式 MVC 单元 工作 存储 | 更新日期: 2023-09-27 18:11:06

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

我的问题是,我是微软引入的MVC 4的新手。我可以在MVC 4环境中应用上述模式(存储库和工作单元)吗?在该设计模式中启动我的项目是好方法吗?

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

谁知道MVC 4,请评论一下,非常感谢。

带有存储库和工作单元模式的MVC 4

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

从"我应该使用哪种模式"的问题开始,而不首先考虑您需要编写的应用程序的细节,这肯定会导致创建过度设计的应用程序。

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

如果你仍然确定你的应用真的需要这样的方法,而不是自己实现所有这些东西,我建议使用像NHibernate这样的框架,因为你需要的不仅仅是UoW和repo——它们将需要身份映射实现等等。NHibernate提供了很多现成的东西(例如,它的Session类型实际上是UoW的一个很好的实现),并且涵盖了许多细节,只有当你深入了解实现自己版本的细节时,你才会发现这些细节是必要的。实体框架在这里也可能是一个不错的选择,尽管它不是我最喜欢的。

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

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

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

关于是否使用Repository模式有很多争论。这里有一些很好的解释

我们需要Repository吗?

Life without repository - Ayende

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

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