MVC对n层架构

时间:2009-03-30 17:36:09

标签: model-view-controller n-tier-architecture

我想知道MVC(这是一种架构模式)与应用程序的n层架构之间究竟有什么区别。我搜索了它但找不到简单的解释。可能我对MVC概念有点天真,所以如果有人能够解释其中的差异,那就太棒了。

欢呼声

12 个答案:

答案 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

意思是:

  • 在3层等效项中,层之间的通信是双向始终通过中间层
  • 在MVC等效中,通信在单向;我们可以说每个“层”由左边的那个更新,然后更新右边的那个 - 其中“left”和“right”仅仅是说明性的

P.S。 客户端将是查看中间 控制器

答案 2 :(得分:30)

这是n-tier architecture

所说的内容
  乍一看,三层可能   看起来类似于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,根据我的模型视图控制器的工作原理如下。

  1. 客户通过请求任何服务来启动会话。
  2. 此请求由Controller(请求处理程序,重定向程序等)
  3. 接收和处理
  4. Controller处理请求的基本信息,并将其重定向到可填写数据请求的相关模型。
  5. 模型根据Controller传递的参数填充请求,并将结果发送回Controller。 (注意:这里我想清楚一点,数据不会直接返回到真正的MVC架构中的客户端,而是填满并返回给控制器。)
  6. 控制器,而不是将该数据发送到View(客户端)。
  7. 客户在他面前提供所要求的服务。
  8. 这就是我所知道的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架构是三角形的:视图向控制器发送更新,控制器更新模型,视图直接从模型更新。