Asp.net mvc 如何决定在web应用程序MVC或三层体系结构中使用哪一种?

Asp.net mvc 如何决定在web应用程序MVC或三层体系结构中使用哪一种?,asp.net-mvc,architecture,Asp.net Mvc,Architecture,如果我们必须为.Net中的web应用程序选择任何一种体系结构模式,MVC还是3层,那么如何决定呢?这两种模式都是非常高级的概念,对于所有高级概念都没有明确的答案。此外,你可以非常成功地混合它们。例如,在表示层上有多层应用程序,前提是您的应用程序足够大,这是必需的(例如,您有大型数据集群+分析层+报告层) 每次您在这两个方面中进行选择时,我建议您考虑以下方面: 为了制定最后期限,您和您的团队最满意的架构是什么 您的应用程序到底有多复杂,使用这两种体系结构的具体好处是什么 您的系统将采用什么使用模式

如果我们必须为.Net中的web应用程序选择任何一种体系结构模式,MVC还是3层,那么如何决定呢?

这两种模式都是非常高级的概念,对于所有高级概念都没有明确的答案。此外,你可以非常成功地混合它们。例如,在表示层上有多层应用程序,前提是您的应用程序足够大,这是必需的(例如,您有大型数据集群+分析层+报告层)

每次您在这两个方面中进行选择时,我建议您考虑以下方面:

  • 为了制定最后期限,您和您的团队最满意的架构是什么
  • 您的应用程序到底有多复杂,使用这两种体系结构的具体好处是什么
  • 您的系统将采用什么使用模式,以及哪个体系结构解决方案更适合解决这些使用模式的需求
  • 每个解决方案的可维护性如何
  • 这个清单当然可以继续下去,但我认为这四件事会让你走上正轨

    根据我的经验,现实生活系统(不是学术幻想系统)的体系结构从来都不是MVC或3层,而是许多东西的混合体:)

    吉普车

    我认为您不幸地遵循了一种思路,许多新加入MVC的开发人员都认为MVC(模型)中的“M”纯粹是一个linq2sql平面实现,这就是模型。不是这样。。。在我们的应用程序中,我们必须满足web/桌面和手持设备的混合需求,所有这些设备都使用它们内部的各种通用功能。因此,我们创建了一个包含所有业务逻辑的“BLL/DAL”dll,该dll在mvc应用程序中被引用为“M”。同样的“bll/dal”也用于我们的webforms应用程序以及桌面应用程序。在当前的一个应用程序中,我们使用bll/dal dll连接到oracle后端,并将MVC纯粹用作RESTful服务,充当两个遗留系统之间的中介。考虑到我们的bll/dal dll的设计,我们可以很容易地将其切换到sqlserver,只要业务需要

    因此,简而言之,选择MVC或3层(我实际上认为你的意思是分层,而不是分层[这更多地涉及到功能/服务的物理分离])的主张完全没有意义,因为它们正在融合,而不是完全不同的技术

    希望这能有所帮助——今天晚些时候,我将通过谷歌寻找一些例子,以证明我的方法的充分性

    [编辑]-从这里的一个类似问题开始; N层只是指实现的物理结构。这两者有时会混淆,因为MVC设计通常使用N层体系结构实现


    简而言之,一个是对象/API设计,一个是系统架构;两者都可以快乐地生活在一起。

    您有多少层与MVC/MVP/MVVM或MV无关???一个是应用程序的物理分离,另一个是设计模式。@Josh:MVC、MVP、MVVM和n-tire(3-tore)都是架构模式,而不是设计模式,这是“层”,看在Pete的份上!如果我认为你在应用架构阶段所提出的所有4点,那么我将总是考虑3-轮胎,并且大多数人在3轮胎架构中非常舒服,所以我们将永远不会使用MVC?那我们什么时候使用MVC呢?