我想知道MVC(一种架构模式)和n层架构在应用程序中的区别。我搜索了一下,但找不到简单的解释。也许我对MVC概念有点幼稚,所以如果有人能够解释一下它们之间的区别,那就太好了。
我想知道MVC(一种架构模式)和n层架构在应用程序中的区别。我搜索了一下,但找不到简单的解释。也许我对MVC概念有点幼稚,所以如果有人能够解释一下它们之间的区别,那就太好了。
N层架构通常将每一层通过网络进行分离。例如,表示层位于某些Web服务器上,然后与后端应用服务器通过网络进行业务逻辑交互,之后再通过网络与数据库服务器进行交互,也许应用服务器还会调用某些远程服务(例如Authorize.net进行付款处理)。
MVC是一种编程设计模式,其中不同的代码部分负责表示应用程序中的模型、视图和控制器。这两个概念之间有关联,因为例如模型层可能具有内部实现,该实现调用数据库来存储和检索数据。控制器可能驻留在Web服务器上,并远程调用应用服务器来检索数据。MVC抽象了应用程序的体系结构实现细节。
N层仅仅指的是一种物理实现结构。这两个概念有时会混淆,因为MVC设计通常使用N层架构来实现。
如果一个三层设计像这样:
Client <-> Middle <-> Data
使用MVC模式:
Middle
^ |
| v
Client <- Data
这意味着:
注:客户端将是视图,中间层则是控制器
这是对于n-tier architecture的表述:
乍一看,三层架构可能与MVC(模型视图控制器)概念相似;然而,在拓扑上它们是不同的。在三层架构中的一个基本规则是客户端层永远不会直接与数据层通信;在三层模型中,所有通信都必须通过中间件层。从概念上讲,三层架构是线性的。然而,MVC架构是三角形的:视图将更新发送到控制器,控制器更新模型,视图直接从模型获取更新。
给自己放松一下,解决现实世界中的问题时不要限制自己的思维方式。只需记住一些通用原则之一是关注点分离。
三层体系结构的基本规则是客户端层永远不直接与数据层通信;在三层模型中,所有通信都必须通过中间件层。
这是一种线性体系结构。它解决了如何在用户和数据库之间传递信息的问题。而MVC是一个三角形的体系结构:视图(View)将更新发送给控制器(Controller),控制器更新模型(Model),并且视图直接从模型获取更新。这解决了用户界面如何管理屏幕上的组件的问题。
@Cherry 中间件在MVC模式中更像请求处理程序或重定向器。
我想简单解释一下MVC,对我来说,模型视图控制器的工作方式如下:
这就是我所知道的关于MVC的所有内容。
除了是线性的之外,N层模型与其他模型的另一个主要区别是,在N层模型中,N不一定是三层!它通常被实现为三层(表示层、应用层、数据层),其中中间层有两个子层(业务逻辑和数据访问)。此外,在MVC模型中,模型可以包含数据和用于数据操作的业务逻辑,而在N层模型中,这些将位于不同的层中。
N-Tier架构最好使用部署图进行定义。
MVC架构最好使用序列图进行定义。
这两者不同且无关,您可以将两种架构结合在一起。许多公司已经采取了创建N层架构的步骤,不仅为了部署和可扩展性,还为了代码重用。
例如,您的业务实体对象可能需要被桌面应用程序、为客户端公开的Web服务、Web应用程序或移动应用程序所使用。仅仅使用MVC方法将无法帮助您重用任何东西。