【问题标题】:Separate the controllers in a new project? Is this a good design?在新项目中分离控制器?这是一个好的设计吗?
【发布时间】:2012-04-24 03:06:58
【问题描述】:

我的同事告诉我将我的控制器分开在一个单独的项目中,以使单元测试尽可能容易,他还告诉我为控制器项目和测试项目创建一个解决方案,以避免在执行单元时加载整个应用程序测试。在新项目中分离控制器是一种好方法吗?

【问题讨论】:

    标签: asp.net-mvc controller


    【解决方案1】:

    我不确定这个问题是否有简单的“是”或“否”答案。我认为您的项目必须非常非常大才能对您的单元测试产生影响。我的个人意见是将控制器与视图和视图模型一起留在 Web 项目中。但是,我喜欢将模型移到单独的项目中。我这样做的原因与更简单的单元测试关系不大,而是在其他应用程序中重用数据访问(模型)。

    【讨论】:

      【解决方案2】:

      在我看来,您至少应该将控制器与您的视图项目(通常是我的 Web 项目)分开,因为这个想法是控制器应该能够与任何视图一起使用(也许稍后您决定使用例如,它们用于 Windows 窗体项目)。它也使命名空间更加干净。

      【讨论】:

      • Kad81,其实我也是这么想的,我在网上搜索了一个关于如何做到这一点的教程,但我失败了,有一些,但很难理解。我希望你能给我一些关于这种方法的链接。 :)
      • 我看到您正在使用 ASP.NET MVC...抱歉,我实际上并没有太多使用该特定框架的经验。我同意很难找到好的例子。在这种情况下,我的一般建议是考虑应用程序的大小以及控制器等组件的可重用性需求。如果它可能是一个相当小的、独立的 Web 系统,那么将它们放在哪里可能不会有太大的不同。您也可以随时移动东西(尽管有时会有些痛苦)。
      【解决方案3】:

      在我看来,让你将控制器移到一个单独的项目有两件事要考虑,如果你这样做,那么它会迫使你思考如何解决低耦合问题,并且精确地低耦合类可以是比紧耦合类更容易测试。

      另一方面,将控制器与视图放在同一个项目中是合乎逻辑的,因为控制器通常知道视图。

      如果您想到可重用性,这里可能存在争议,因为控制器通常是“胶水”组件,这意味着它们中有很多布线。

      【讨论】:

      • 我同意你的观点,而且我认为有很多工作要做,特别是要将它们连接到视图中。我是 MVC 的新手,所以对我来说,在使用这项技术制作良好的架构方面非常困惑。
      • 用简单的话来说MVC,视图是通用的,它们是你的“组件”,你应该能够在你喜欢的地方使用它们,控制器监听视图中发生的事情并更新模型,他们查询模型以将其显示在视图上。
      • 您说控制器知道视图是正确的。然而,关键是控制器只需要了解视图界面,​​而不需要了解视图本身。我的设计总是将控制器与视图接口放在同一个程序集中,然后我的 Web 项目实现这些接口。这样,您可以通过创建简单的类来对控制逻辑进行单元测试,通过实现视图接口来模拟网页。
      【解决方案4】:

      起初这似乎是个好主意。在中间创建一个表示层并保持您的 MVC 项目仅包含视图,使其真正成为一个 UI 项目。另一方面,您可能会失去对视图的工具支持。由于您必须忽略所有警告,因此您必须确保所有视图都存在,并且对您的对象进行了强类型化。

      我不理解在您的测试套件中引用您的 MVC 项目的顾虑,因为您可能无论如何都会引入 MVC 命名空间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        相关资源
        最近更新 更多