【问题标题】:Encapsulating ASP.NET MVC models as reusable assembly将 ASP.NET MVC 模型封装为可重用程序集
【发布时间】:2011-10-05 18:22:02
【问题描述】:

是否有一种公认/预期的最佳实践方法将 ASP.NET MVC 的“模型”部分封装到可重用的程序集中?

作为技术练习,我想在不同系统中使用相同的业务/持久层。例如,将相同的程序集编译到 ASP.NET MVC 应用程序和传统的 Windows 服务中。

我的想法是在单独的程序集中实现我的模型(和 EntityFramework / DbContext / 等)。然后我的 MVC 项目将完全省略“模型”文件夹,而我的控制器将引用“模型程序集”中的代码。我一直更喜欢 ViewModels 而不是实际的业务对象作为 Views 的“目标”,所以我很高兴我的所有 Views 都被强类型化为 ViewModel 对象而不是 Model 对象。

  1. 这是一种常见的方法吗?
  2. 是否违反了 ASP.NET MVC 的“约定优于配置”的原则?
  3. 如果采用这种方法,我是否会失去特定的 MVC 优势?
  4. 这种方法还有其他严重的缺陷吗?

我是 ASP.NET、C# 和 Windows 服务的相当熟悉的老手,但对 ASP.NET MVC 却很陌生。如果这是一个重复的问题,我们深表歉意;大多数“可重用 MVC”问题都集中在 UI 组件上,而不是整个业务/持久性“层”。与往常一样,提前感谢您的见解!

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    是的,这就是我所看到的许多系统开发的方式。您最终会得到一个“业务层”,它可以与 REST-over-WCF-on-IIS 和其他任何东西一样工作。

    不,你不会丢失我所知道的任何东西,尽管维护多个项目会稍微增加一些复杂性。

    这样做的另一个好处是,您最终会得到更易于测试的控制器和模型层,因为您可以在它们之间使用依赖注入。

    【讨论】:

    • 希望样本量超过一个人。 ;) 但是,我很高兴听到这听起来像是我在一个普遍接受的轨道上。谢谢!
    • 有很多框架都遵循这种模式——例如,S#arpArchitecture。
    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多