MVC vs n层架构
我想知道MVC(这是一个架构模式)和一个应用程序的n层架构之间究竟有什么区别。 我search了它,但找不到一个简单的解释。 可能是我对MVC概念有些天真,所以如果任何人都可以解释一下这个差别,那就太好了。
干杯
N层体系结构通常每层都由networking隔开。 IE表示层位于某些Web服务器上,然后通过networking与后端应用程序服务器通信以获得业务逻辑,然后再通过networking与数据库服务器通信,也可能是应用程序服务器也呼叫某些远程服务说Authorize.net支付处理)。
MVC是一种编程devise模式,其中代码的不同部分负责在某些应用程序中表示模型,视图和控制器。 这两件事是相关的,因为,例如,模型层可能有一个内部实现,调用数据库来存储和检索数据。 控制器可能驻留在networking服务器上,并远程调用应用程序来检索数据。 MVC抽象了应用程序的体系结构如何实现的细节。
N层只是指实现的物理结构。 这两个有时会混淆,因为MVCdevise通常是使用N层架构实现的。
如果三层devise是这样的:
Client <-> Middle <-> Data
MVC模式将是:
Middle ^ | | v Client <- Data
意思是:
- 在三层结构中,层之间的通信是双向的,并且总是通过中间层
- 在MVC等价中,通信是单向的 ; 我们可以说每个“图层”由左边的那个更新,然后更新右边的那个 – “左”和“右”只是说明
PS 客户端将是视图和中间 控制器
这是什么 说到n层架构
乍一看,三层看起来可能与MVC(模型视图控制器)概念相似; 但是,拓扑结构却不同。 三层体系结构的基本规则是客户端层不直接与数据层通信; 在三层模型中,所有通信都必须通过中间件层。 从概念上讲,三层架构是线性的。 但是,MVC体系结构是三angular形的:View将更新发送到Controller,Controller更新Model,View从Model直接更新。
唯一的相似之处是这两个模式在他们的图表中有三个框。 从根本上说,它们的用途完全不同。 如果事实上,通常不是在哪种模式之间进行select,而是两种模式可以有效地一起使用。 这是一个比较好的两个: http : //allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
@Cherry中间件更像MVC模式中的请求处理程序或redirect器。
我想解释一下MVC,根据我的模型视图控制器是这样工作的。
- 客户端通过请求任何服务来启动会话。
- 该请求由Controller(请求处理程序,redirect器等)接收和处理。
- 控制器处理请求中的基本信息并将其redirect到可填充数据请求的相关模型。
- 模型根据Controller传递的参数填写请求,并将结果发送给Controller。 (注意:在这里我想清楚的是,数据不是直接返回到真正的MVC架构中的客户端,而是填满并返回给控制器。)
- 控制器将数据发送到查看(客户端)。
- 客户在他面前有请求的服务。
这就是我所知道的MVC。
三层体系结构的基本规则是客户端层不直接与数据层通信; 在三层模型中,所有通信都必须通过中间件层。
这是class轮build筑。 这解决了如何在用户和数据库之间传递信息的问题。 MVC是一个三angular形体系结构:View将更新发送给Controller,Controller更新Model,View从Model中直接更新。 这解决了用户界面如何pipe理屏幕上的组件的问题。
除了线性之外,在这里没有强调的另一个主要区别是在N层模型中,N不一定是3层! 它通常被实现为三层(表示,应用,数据),中间层有两个子层(业务逻辑和数据访问)。 而且,MVC中的模型可以同时包含用于数据操作的数据和业务逻辑,而这些将在n层的不同层中。
给自己一个rest。 当解决现实世界的问题时,不要将自己限制在某些模式。 只要记住一些总的原则,其中之一就是分离的关注点 。
一个N层体系结构最好使用部署图来定义。
MVC架构最好使用序列图来定义。
2是不一样的,是不相关的,你可以把两个架构结合在一起。 许多公司已经采取步骤来创buildN层架构,不仅是部署和可伸缩性,而且还用于代码重用。
例如,您的业务实体对象可能需要由桌面应用程序,为客户端公开的Web服务,Web应用程序或移动应用程序使用。 简单地使用MVC方法不会帮助你重用任何东西。
结论:N层是一种架构,MVC是一种devise模式。 它们是两个不同领域中应用的同一个比喻。
杰里:下面是一个简单的例子,说明两者如何相关:
第1层 – 由通过某种networking服务或类似networking与第2层进行通信的模型组成,用于处理inputvalidation,计算以及与视图相关的其他内容。 它包含了自己的观点,可以是桌面应用程序中的graphics用户界面,也可以是networking应用程序中的networking界面。
第2层 – 包含某种服务或其他接收来自第1层的消息的方式。对于第1层不应该知道,所以只能回答上面的呼叫 – 从不要求自己的要求。 还包含所有的业务逻辑。
第3层 – 包含域模型,数据库的对象表示以及所有用于通信和更新数据库条目的逻辑。
在三层模式中,所有的通信都必须通过中间层。 从概念上讲,三层架构是线性的。 然而,[模型 – 视图 – 控制器] MVC体系结构是三angular形的:视图向控制器发送更新,控制器更新模型,视图从模型直接更新。
简单的说; MVC可以这样分开:M(odel)=数据库查询,V(iew)= html / css / js /(可以包含php(编程语言代码),但是这不是个好主意),C(ontroller) = php类和函数。 我认为n层意味着应用程序分布在不同的服务器上(例如服务器1上的video,服务器2上的音乐,服务器x上的查询等)。 所以你的网站可以在domain.com,而你的video是(域名倒退)niamod.com。 看看CodeIgniter了解更多关于MVC(它的简单/有趣的学习)。