it-swarm.cn

MVC架构的最佳做法

我的问题更多是关于如何构建MVC应用程序。例如,鼓励我们使用带有存储库模式的DI来分离控制器的数据访问,但是在HOW上很少提到专门针对MVC做到这一点。例如,我们将存储库类放在哪里?它们似乎与模型无关,因为模型也应该与实际的数据访问技术相对分离。

第二个问题涉及如何构造层或层。大多数示例应用程序(书呆子晚餐,音乐商店等)似乎都使用单层2层方法(不计算测试),通常具有直接调用L2S或EF代码的控制器。

如果要创建多层/层应用程序,那么关于MVC的最佳实践是什么?

28
Erik Funkenbusch

DI是使用Controller Factory在ASP MVC中)完成的。此工厂用于解析您的控制器依赖性。

MvcContrib具有一些Controller Facotry实现,您可以直接使用它们。我使用他们的温莎城堡实现,效果很好。还建议您检查他们的TestHelper类。它具有一些非常酷的功能,可以模拟Controller HTTPContext,Session等。 MVCContrib

我个人喜欢给我的模型一个可以使用的Repository实例。该模型向存储库(CRUD)公开一个api。控制器对特定模型的依赖关系在创建(构造函数)时注入,这是通过Controller Factory注入的。这是我的IoC容器管理的对象图的入口。

5
Nick

例如,我们将存储库类放在哪里?

它们属于模型;它们是应用程序内模型。

如何构造图层?如果要创建多层/层应用程序,那么关于MVC的最佳实践是什么?

层表示代码的物理分隔。层代表逻辑分离。这些层(目前是这样)适合MVC。根据业务逻辑的数量,可以将其放置在Controller中,也可以将其放置在单独的Assembly中,并可以在请求周期中由Controller使用。

2
George Stocker