【问题标题】:How many layers is too many?多少层才算太多?
【发布时间】:2011-02-28 20:20:03
【问题描述】:

由于我在过去 2 年一直在学习软件开发,所以我学得越多,似乎我遇到的灰色地带就越多。我现在遇到的一个灰色区域是试图决定一个应用程序应该有多少层。例如,在 WPF MVVM 应用程序中,哪种分层方式合适?以下是不是太分开了?当我提到分层时,我的意思是为每一层创建一个新的类库。

  • 演示文稿(查看)
  • 查看模型
  • 业务层
  • 数据访问
  • 模型层
  • 实用层

或者对于非 MVVM 应用程序,这是否过于分离?

  • 演示文稿
  • 商务
  • 数据访问
  • 模型层
  • 实用层

可以一起运行图层并为每个图层创建文件夹吗?对此灰色区域的任何着色将不胜感激。

【问题讨论】:

  • 另一个你可能会问自己的问题是,多少层太少了?
  • 社区维基?对此没有“正确”答案……灰色区域怎么样? :)
  • 答案当然是42
  • 你数到三,不多也不少。三是你要数的数,数的数是三。
  • 当 42 闪过我的脑海,但我真的希望 43。

标签: c# wpf architecture mvvm n-tier-architecture


【解决方案1】:

答案是,视情况而定。首先,单独的类库并不总是意味着单独的“层”。层是相关功能的概念性分组,可能会或可能不会在单个程序集中体现出来。

您创建多少层实际上取决于您手头的问题。传统上,WPF MVVM 应用程序将至少包含 3 层(模型、视图、视图模型),但它确实可以变化。我经常在同一个程序集中看到视图和视图模型,而在它们自己的程序集中看到模型(通常是因为模型对象是在其他上下文中使用的 POCO)

真的没有灵丹妙药可以回答你的问题,它完全取决于你的问题。 “分层”和分离的优点是增加可维护性、促进代码重用和提高整体清晰度(仅举几例)。

我认为,如果您使用当前的分层解决方案没有达到这些目标,那么您还有改进的空间。如果增加层是减少清晰度或可维护性,那么你已经走得太远了。如果您只有一个“层”并且它变得臃肿,那么您有机会添加一个层。

底线是不要为了遵循严格的“模式”而过度设计某些东西。如果该模式对您和您手头的问题有明显的优势,那么请实施它,但要了解您这样做的原因以及每个“层”的目标是什么。

【讨论】:

    【解决方案2】:

    考虑以下方面:

    • 速度
    • 可重用性
    • 可读性
    • 开发时间
    • 修改速度(描述这一点的正确词语让我无法理解。编辑 - 可维护性是我一直在寻找的[从别人的答案中偷来的])
    • 应用程序占用空间(比例和字面大小)
    • 您的开发团队

    ...然后根据您看重的这些来调整您的架构。我可能错过了其他一些重要的部分,但你明白了。这个问题没有正确或错误的答案。

    【讨论】:

      【解决方案3】:

      如果层本身成为项目可维护性的障碍,而不是提高可维护性,则应用程序只有太多层。

      【讨论】:

      • 在实践中,我的系统总是包含:front proxy 任何接受用户请求的东西,比如 MVC 控制器; business 这处理了 sequence 的编排; compute 这处理所有算法工作、数据聚合等;和data access,它处理所有的sql调用、远程web请求、文件系统等等。
      【解决方案4】:

      过多的确切层数比需要的层数多 1。

      【讨论】:

        【解决方案5】:

        Layered Architecture: 本文描述了 .NET/WPF 富客户端应用程序的具体示例架构。此外,该架构显示了您在哪一层找到模型-视图-视图模型 (MVVM) 模式的参与者。

        【讨论】:

          猜你喜欢
          • 2012-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-26
          • 1970-01-01
          • 1970-01-01
          • 2012-07-12
          • 2011-02-04
          相关资源
          最近更新 更多