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

时间:2013-04-28 05:17:50

标签: c# asp.net-mvc design-patterns asp.net-mvc-4

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

我的问题是,我是微软推出的MVC 4的新手。我在MVC 4环境中也应用了上述模式(存储库和工作单元),这是在该设计模式中启动项目的好方法。 / p>

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

任何人都可以知道关于MVC 4的评论,请高度赞赏。

3 个答案:

答案 0 :(得分:7)

“在mvc中使用存储库模式和工作单元类是很好的” - 这是非常值得怀疑的,虽然说“被认为是今天使用的最好的模式之一”是完全错误的:模式只是好的或坏的在某些情况下,如果没有这种情况,你无法确定它们是否是一个好的选择。

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

存储库和UoW已经被Domain driven design普及,如果沿着这条路走下去,它们会很有意义。 DDD对于某些应用程序来说是很好的方法,但我认为这不是大多数应用程序。许多Web应用程序只是CRUD应用程序,它们不会受益于DDD或包装对存储库中实体的每次访问 - 例如选择微型ORM通常是一种更为理智的方法。

如果您仍然确定您的应用确实需要这样的方法,而不是自己实现所有这些内容,我建议使用像NHibernate这样的框架,因为您需要更多只需要UoW和repo - 他们将需要身份映射实现等.NGibernate提供了很多开箱即用的东西(例如它的Session类型实际上是UoW的一个很好的实现加上更多),并涵盖了许多细节,你只会发现它们的必要性在您详细介绍实现自己的版本之后。实体框架也可能是一个不错的选择,虽然它不是我的最爱。

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

答案 1 :(得分:5)

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

首先,您需要了解应用程序的复杂性。存储库可能会给您的应用程序增加不必要的复杂性。但是您没有提到如何与数据库通信。如果您计划使用任何ORM像(Nhibernate,Entity framework)这样的工具,那么你已经有了很好的抽象。为什么你需要更多的抽象层次。

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

Do we need Repository ?

Life without repositories - Ayende

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

答案 2 :(得分:1)

在ASP.NET MVC教程中查看Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application,这应该足以让您朝着正确的方向前进。