10

我一直在阅读一些关于 ASP.NET MVC、SOLID 等的内容,我正在尝试为中小型 ASP.NET MVC 应用程序找出一个简单的“配方”,将这些概念结合在一起;我最关心的问题是控制器过于复杂,就像 web 表单中的代码隐藏文件,其中包含所有类型的业务逻辑。

对于小型数据驱动的应用程序,我正在考虑以下架构:

  • 控制器:只处理请求,调用相应的服务并将动作结果返回给视图;
  • 模型:POCO,处理所有业务逻辑、授权等。依赖于存储库,完全不了解持久性基础设施。
  • 存储库:实现IRepository<T>,使用依赖注入,是我的数据库代码所在的位置;只接收和返回 POCO。

我正在考虑在控制器和模型之间提供服务,但如果它们只是传递方法调用,我不确定它会有多大用处。

最后应该有覆盖模型代码的单元测试,以及覆盖存储库代码的单元+集成测试(如果可能,遵循“红绿”实践)

想法?

4

4 回答 4

8

伊恩·库珀(Ian Cooper)最近对此发表了一篇很好的文章:

胖控制器

于 2008-12-09T10:20:25.537 回答
3

简单的方法:(视图)使用 ASP.NET 的表示层,(控制器)代码隐藏或 AJAX 服务层,(模型)应用程序服务层、业务模型层和持久性/数据访问层。

当然,您可以通过多种方式来处理复杂性,以构建清晰易读和可理解的应用程序。

有关该主题的最新讨论,我发现它非常好,请查看这本新出版的书:Microsoft .NET:为企业构建应用程序

于 2008-12-16T18:28:59.590 回答
2

这些演练非常有帮助:

MVC 框架和应用结构

演练:在 Visual Studio 中创建带有单元测试的基本 MVC 项目

另请参阅:aspnet-mvc-structuring-controllers

于 2008-12-09T10:21:10.230 回答
2

Rob Conery有最好的答案 IMO。

查看他的MVC Storefront Application,它带有完整的源代码视频教程

于 2008-12-09T10:34:12.357 回答