3层架构和MVC有什么区别?

71

3层架构和MVC有什么区别?

它们一样吗?

两者都有3个层,即模型、视图和控制器。


1
http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture - cobaltduck
这更像是“软件架构”或“软件设计”。 “项目管理”更多的是行政方面的工作... - umlcat
8个回答

87

与MVC架构的比较

乍一看,三层架构可能类似于模型-视图-控制器(MVC)概念;然而,从拓扑结构上看它们是不同的。 在三层架构中的一个基本规则是客户端层永远不直接与数据层通信;在三层模型中,所有通信必须通过中间层进行。从概念上讲,三层架构是线性的。然而,[模型-视图-控制器] MVC架构是三角形的:视图发送更新到控制器,控制器更新模型,视图直接从模型获取更新。

来源:http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture


22
MVC架构不一定是三角形的,它可以是任意形状。然而,n层架构总是线性的。 - Wajih Aziza
2
请查看此视频中的图片或此文章,希望对某些人有所帮助。 - Shaiju T
1
那么,在线性架构和三角形架构中,哪一个更好,为什么? - Hosein Aqajani
6
MVC是分层架构中的表示层框架,而N-tier是一种物理部署架构风格,它们不能进行比较,没有意义。 - LIU YUE

28

MVC是一种模式,用于使UI代码更易于维护和测试。当使用MVC模式时,可以对UI代码的较大部分进行单元测试。

这里有一篇很好的文章,详细描述了MVC模式: http://martinfowler.com/eaaDev/uiArchs.html

3层架构是一种用于完全不同原因的模式。它将整个应用程序分成有意义的“组”:UI、业务逻辑、数据存储。

因此,3层应用程序指的是应用程序中的所有代码。MVC模式是在UI层中使用的一种模式。

这里有一篇关于3层架构的好文章:http://dotnetslackers.com/articles/net/IntroductionTo3TierArchitecture.aspx

如需进一步了解,您可以搜索互联网并找到无数关于这两个主题的文章。


8
这是错误的,MVC是一种架构原则,不仅适用于UI层。在任何Web应用程序中都可以找到这样的例子,其中视图是HTML,控制器是API端点,模型是数据表示。MVC .net就是其中的一个例子。请参考这个非常好的解释: https://softwareengineering.stackexchange.com/questions/299836/difference-between-3-tier-architecture-and-mvc-model-view-controller-in-asp-n - Daniel Dror

7
他们在某种程度上是相似的,例如:
  • 3层将整个应用程序分为:UI、逻辑和数据
  • MVC将UI部分分为:视图(UI的一种类型)、模型(数据)和控制器(逻辑)
但区别在于各层之间的通信方式:
  • 3层:所有内容都通过逻辑层(a->b,b->c和c->b,b->a)
  • MVC:它们以三角形方式两两通信(a->b,b->c,c->a)

3
简要来说,在三层架构中,表示层从不直接与数据层通信。在MVC中,模型、视图和控制器之间的关系是三角形的。其中三个中的两个可以相互通信。

2
在三层结构中, 用户界面(UI)被与业务逻辑层(Business Tier)分开来,以确保负责外观和感受的 UI 设计师不会被留给编程专业人士处理的繁重编程工作所混淆。这种架构(三层结构) 在生产大型应用程序时非常重要,涉及大量人员。

1
主要区别在于: 在这种情况下,“层”也可以称为“层次结构”。涉及的三个层次结构包括: 一个呈现层,以HTML/JS/CSS的形式将内容发送到浏览器。这可能利用像React、Angular、Ember、Aurora等框架。 一个应用层,使用应用服务器并处理应用程序的业务逻辑。这可能是用C#、Java、C++、Python、Ruby等编写的。 一个数据层,它是提供对应用程序数据访问的数据库管理系统。这可能是MSSQL、MySQL、Oracle或PostgreSQL、Mongo等。 MVC架构是三角形的:视图向控制器发送更新,控制器更新模型,视图直接从模型获取更新。

0
首先,层是用于物理部署的,你可能指的是层次结构。而MVC是一个用于表示层的框架,就是这样。

0
我建议你尝试使用一些采用MVC和三层架构的技术来构建Web应用程序,以真正理解它们之间的区别。我建议你使用Ruby on Rails与模板引擎,因为Rails是最知名的MVC框架之一。

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接