我想知道 MVC (一种架构模式)和应用程序的 n 层架构到底有什么不同。我寻找它,但找不到一个简单的解释。也许我在 MVC 概念上有点天真,所以如果有人能够解释这种区别,那就太好了。
干杯
N 层体系结构通常具有由网络分隔的各层。也就是说,表示层位于某些 Web 服务器上,然后通过网络与后端应用服务器进行业务逻辑对话,然后再通过网络与数据库服务器对话,也许应用服务器还会调用某些远程服务(比如用于支付处理的 Authorize.net)。
MVC 是一种编程设计模式,其中不同部分的代码负责在某些应用程序中表示模型、视图和控制器。这两者是相关的,因为例如,模型层可能有一个内部实现,它调用数据库来存储和检索数据。控制器可以驻留在 webserver 上,并远程调用 appserver 来检索数据。MVC 抽象出应用程序体系结构如何实现的细节。
N 层只是指实现的物理结构。这两者有时会混淆,因为 MVC 设计通常是使用 N 层架构实现的。
杰瑞: 这里有一个简单的例子来说明这两者是如何联系在一起的:
第1层 -包括通过某种网络服务或类似服务与第2层通信的模型、处理输入验证、计算和与视图相关的其他事情的控制器。当然,它也包含视图本身——可以是桌面应用程序中的 GUI,也可以是 web 应用程序中的 web 界面。
第2层 -包含某种服务或以其他方式接收来自第1层的消息。不知道/不应该知道第一层,所以只能回答来自上面的呼吁-永远不要要求本身的东西。还包含所有业务逻辑。
第3层 -包含域模型、数据库的对象表示和所有用于通信和更新数据库条目的逻辑。
这就是 译自: 美国《科学》杂志网站(http://www.veryicon.com/icon/view/Apollo/Wikipedia% 2520Icon.jpg)所说的 n 层架构
乍一看,这三层楼可能 似乎类似于 MVC (模型视图 控制器)概念; 然而, 它们在拓扑结构上是不同的 基本原则 架构是客户端层从来没有 直接与数据通信 在一个三层模型中 通讯必须通过 中间件层。概念上的 三层架构是线性的。 然而,MVC 架构是 三角形: 视图将更新发送到 控制器,控制器更新 模型,并且视图得到更新 直接从模型。
三层体系结构中的一个基本规则是客户端层从不与数据层直接通信; 在三层模型中,所有通信都必须通过中间件层。
这是班轮结构。这解决了如何在用户和数据库之间传递信息的问题。由于 MVC 是一个三角架构: 视图向控制器发送更新,控制器更新模型,视图直接从模型中更新。这解决了用户界面如何管理屏幕上的组件的问题。
如果一个三层设计是这样的:
Client <-> Middle <-> Data
MVC 模式是:
Middle ^ | | v Client <- Data
意思是:
附注 客户是 观景 中间是 控制员
@ Cherry 中间件更像是 MVC 模式中的请求处理程序或重定向程序。
我想解释一下 MVC,根据我的模型视图控制器的工作原理是这样的。
这就是我所知道的车祸事故。
最好使用部署关系图定义 N 层体系结构。
MVC 架构最好使用时序图来定义。
这两者并不相同,也不相关,因此可以将两种体系结构组合在一起。许多公司已经采取了创建 N 层架构的步骤,不仅是为了部署和可伸缩性,而且也是为了代码重用。
例如,您的 Business Entity 对象可能需要被桌面应用程序、为客户端公开的 Web 服务、 Web 应用程序或移动应用程序使用。简单地使用 MVC 方法根本不会帮助您重用任何东西。
结论: N 层是一种体系结构,MVC 是一种设计模式,它们在两个不同的领域具有相同的比喻。
唯一的相似之处是这两种模式的图表中有三个框。从根本上说,它们的用途完全不同。如果事实上,它通常不是一个选择之间的模式使用,但两种模式可以一起使用和谐。下面是两者的一个很好的比较: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
这个图表展示了如何将两种模式结合使用,MVC 仅在演示/用户界面层中使用:
除了是线性的,另一个在这里没有得到足够强调的主要区别是,在 N 层模型中,N 不一定是3层的!它通常实现为三层(表示、应用程序和数据) ,中间层有两个子层(业务逻辑和数据访问)。此外,MVC 中的模型可以同时包含用于数据操作的数据和业务逻辑,而这些数据和业务逻辑位于 n 层中的不同层中。
让自己休息一下。在解决现实世界的问题时,不要把自己局限于某些模式。只要记住一些基本原则,其中之一就是 关注点分离。
N 层架构从不直接与数据访问层通信:
所有数据都通过中间层进行通信。
MVC (模型-视图-控制器)体系结构是三角形的。
模型(数据) ,视图(UI) ,控制器(逻辑)。