C# 多少层太多了?

C# 多少层太多了?,c#,wpf,architecture,mvvm,n-tier-architecture,C#,Wpf,Architecture,Mvvm,N Tier Architecture,随着我在过去两年中对软件开发的学习,我学到的东西越多,似乎我遇到的灰色地带就越多。我现在遇到的一个灰色区域是,试图决定一个应用程序应该有多少层。例如,在WPF MVVM应用程序中,哪种分层方式是合适的?以下是不是太分开了?当我提到分层时,我的意思是为每个层创建一个新的类库 演示文稿(视图) 视图模型 业务层 数据存取 模型层 实用层 或者对于非MVVM应用程序,这是不是太分开了 呈现 生意 数据存取 模型层 实用层 可以一起运行图层,只为每个图层创建文件夹吗?这个灰色区域的任何颜色都将受

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

  • 演示文稿(视图)
  • 视图模型
  • 业务层
  • 数据存取
  • 模型层
  • 实用层
或者对于非MVVM应用程序,这是不是太分开了

  • 呈现
  • 生意
  • 数据存取
  • 模型层
  • 实用层

可以一起运行图层,只为每个图层创建文件夹吗?这个灰色区域的任何颜色都将受到欢迎。

答案是,这取决于具体情况。首先,一个单独的类库并不总是意味着一个单独的“层”。层是一个相关功能的概念性分组,它可能在单个程序集中体现,也可能不在单个程序集中体现

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

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

我认为,如果您目前的分层解决方案没有达到这些目标,那么您还有改进的余地。如果增加图层减少清晰度或可维护性,则说明您做得太过分了。如果您只有一个“层”,并且它正在膨胀,那么您有机会添加一个层


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

考虑以下方面:

  • 速度
  • 可重用性
  • 可读性
  • 开发时间
  • 修改速度(描述这一点的正确词语让我不知所措。编辑-可维护性是我一直在寻找的[从别人那里偷来的答案])
  • 应用程序示意图(比例和文字大小)
  • 您的开发团队

…然后根据您所重视的内容调整您的体系结构。我可能遗漏了其他一些重要的部分,但你明白了。对于这个问题,没有正确或错误的答案。

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

太多的层的确切数量比需要的多1层。

本文描述了一个具体的示例.NET/WPF富客户端应用程序的体系结构。此外,该体系结构显示了模型-视图-模型(MVVM)模式的参与者所在的层

你可能会问自己的另一个问题是,有多少层太少了?社区维基?对此没有“正确”的答案。。。灰色地带怎么样?:)答案当然是,你应该数到三,不多也不少。三是你要数数的数字,而数数的数字应该是三。当42出现在我脑海中,但我真的希望是43。在实践中,我的系统总是由:
前端代理
任何接受用户请求的东西,如MVC控制器<代码>业务处理动作序列的编排<代码>计算处理所有算法工作、数据聚合等;以及处理所有sql调用、远程web请求、文件系统等的数据访问。