我想知道MVC(这是一种架构模式)与应用程序的n层架构之间究竟有什么区别。我搜索了它但找不到简单的解释。可能我对MVC概念有点天真,所以如果有人能够解释其中的差异,那就太棒了。
欢呼声
答案 0 :(得分:90)
N层架构通常将每个层由网络分隔开。 I.E.表示层位于某些Web服务器上,然后通过网络与后端应用服务器通信以获取业务逻辑,然后再通过网络与数据库服务器通信,也许应用服务器也会呼叫某些远程服务(比如说Authorize.net进行付款处理)。
MVC是一种编程设计模式,其中代码的不同部分负责在某些应用程序中表示模型,视图和控制器。这两件事是相关的,因为例如Model层可能有一个内部实现,它调用数据库来存储和检索数据。控制器可以驻留在网络服务器上,并远程调用应用程序服务器以检索数据。 MVC抽象出应用程序架构如何实现的细节。
N层只是指实现的物理结构。这两个有时会混淆,因为MVC设计通常使用N层架构实现。
答案 1 :(得分:41)
如果3层设计是这样的:
Client <-> Middle <-> Data
MVC模式将是:
Middle
^ |
| v
Client <- Data
意思是:
P.S。 客户端将是查看和中间 控制器
答案 2 :(得分:30)
乍一看,三层可能 看起来类似于MVC(模型视图 控制器)概念;然而, 在拓扑上它们是不同的。一个 三层基本规则 架构永远不是客户层 直接与数据通信 层;全部采用三层模式 沟通必须通过 中间件层。从概念上讲 三层架构是线性的。 但是,MVC架构是 三角形:视图发送更新 控制器,控制器更新 模型,视图得到更新 直接来自模型。
答案 3 :(得分:16)
唯一的相似之处在于这两种模式在其图表中有三个方框。从根本上说,它们的用途完全不同。事实上,通常不能选择使用哪种模式,但这两种模式可以一起使用。以下是两者的良好比较:http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
答案 4 :(得分:5)
三层体系结构中的基本规则是客户端层永远不会直接与数据层通信;在三层模型中,所有通信都必须通过中间件层。
这是线性架构。这解决了如何在用户和数据库之间传递信息的问题。 MVC是三角形体系结构的地方:View向Controller发送更新,Controller更新模型,View直接从模型更新。这解决了用户界面如何管理屏幕上组件的问题。
答案 5 :(得分:5)
@Cherry 中间件更像是MVC模式中的请求处理程序或重定向器。
我想解释一下MVC,根据我的模型视图控制器的工作原理如下。
这就是我所知道的MVC。
答案 6 :(得分:5)
给自己一个休息时间。在解决现实问题时,不要局限于某些模式。请记住一些一般原则,其中之一是分离关注。
答案 7 :(得分:4)
除了线性之外,这里没有强调的另一个主要差异是在N层模型中,N不一定是3层!它通常被实现为三层(表示,应用程序,数据),中间层具有两个子层(业务逻辑和数据访问)。此外,MVC中的模型可以包含用于数据操作的数据和业务逻辑,而这些模型可以在n层中的单独层中。
答案 8 :(得分:3)
使用部署图最好地定义N层架构。
MVC架构最好使用序列图定义。
2不相同且不相关,您可以将两种架构组合在一起。许多公司已采取措施创建N层架构,不仅用于部署和可扩展性,还用于代码重用。
例如,您的Business Entity对象可能需要由桌面应用程序,为客户端公开的Web服务,Web应用程序或移动应用程序使用。简单地使用MVC方法无助于您重复使用任何东西。
答案 9 :(得分:2)
结论:N层是一种架构,MVC是一种设计模式。它们是在两个不同领域中应用的相同的metaphore。
答案 10 :(得分:1)
第1层 - 由通过某种网络服务或类似控制器与第2层进行通信的模型组成,用于处理输入验证,计算和与视图相关的其他事项。它包含视图本身,当然 - 可以是桌面应用程序中的GUI,也可以是Web应用程序中的Web界面。
第2层 - 包含从第1层接收消息的某种服务或其他方式。不会/不应该知道第1层,所以只能接听来自上面的电话 - 从不要求事物本身。还包含所有业务逻辑。
第3层 - 包含域模型,数据库的对象表示以及用于通信和更新数据库条目的所有逻辑。
答案 11 :(得分:0)
在三层模型中,所有通信都必须通过中间层。从概念上讲,三层架构是线性的。但是,[model-view-controller] MVC架构是三角形的:视图向控制器发送更新,控制器更新模型,视图直接从模型更新。