MVC与3层架构?

chh*_*aya 65 model-view-controller three-tier

MVC和3层架构的基本区别是什么?

小智 34

3层架构风格,MVC设计模式.

那是不同的.

但我们可以在3层架构风格中使用mvc模式.

所以:

表示层:MVC模式中的"控制器和视图".

业务层 :MVC模式的"模型(数据)".

数据访问层:原始数据访问层.

  • 说,"3层是架构风格,MVC是设计模式"是不够的.MVC是一种属于Architectural模式组的设计模式. (16认同)
  • 实际上MVC是一种架构模式,而不是一种设计模式. (9认同)

Mic*_*ins 28

在较大的应用程序中,MVC是仅N层架构的表示层.模型视图和控制器仅关注表示,并使用中间层使用来自数据层的数据填充模型.

MVC还可以用作整个3层体系结构,其中Views是您的演示文稿,控制器是您的业务逻辑,模型是您的数据层(通常由DAL(如实体框架)生成).

理想情况下,您希望您的控制器变得粗糙和愚蠢,将逻辑传递给"业务组件",这实际上将成为您的中间层.

  • 我同意你的第1段,但不同意你的第2段.BL应该*不在控制器中.努力寻找包含BL和精益控制器的强大模型. (11认同)
  • 如果View = Presentation,Controller = Business和Model = DAL那么它们之间的基本区别是什么?哪个更好,为什么? (3认同)

小智 17

在3层架构中,层之间的通信是双向的.在MVC中,通信是单向的; 我们可以说每个"层"由左边的那个更新,然后更新右边的那个 - "左"和"右"只是说明性的.

3层体系结构通常在3个独立的网络节点上部署为3个独立的进程.但MVC旨在作为单个进程部署在单个网络节点中.(像桌面应用程序)

3层中的业务层通常包含实现着名模式的不同层,如业务委托,业务外观,业务对象,服务定位器,数据传输对象等.但MVC本身就是一种用于表示层的设计模式.

3层的目标是将业务逻辑与客户端和数据库分离,因此提供多个客户端协议,高可伸缩性,异构数据访问等.但MVC的主要目标是一部分的实现更改不需要更改另一部分.


Imr*_*hid 12

与Michael在回答中所说的相比,我采取了不同的方法.

控制器永远不会成为您的业务逻辑.对我来说,业务逻辑属于模型层.尽管如此,视图(以及某种程度上的控制器)和表示层的一部分,模型在MVC应用程序中永远不是它的一部分.模型应该是MVC应用程序的核心和灵魂,这就是领域驱动设计可以在MVC应用程序中轻松实现的全部内容.

请记住,您不必将模型放在同一个项目中(谈到ASP.NET MVC).它可以驻留在一个完全不同的项目中,它仍然可以充当应用程序的模型

充当表示层的MVC应用程序只能在具有许多层的大型项目中工作,但它永远不能充当提示者所要求的3层体系结构中的仅呈现层.

所以我们可以说MVC在3层架构的三层中制作了两个(第三个可能是数据层,而这个数据层本身并不是MVC架构的一部分).

谢谢.


Ami*_*deh 8

两者之间没有关系.MVC是表示层模式.整个模型 - 视图 - 控制器存在于表示层中.

  • 模型是对象持有数据(通常只是VO),它们由View表示,或者从View填充.

  • 控制器是获取请求的(并且可以填充模型)并调用服务层.然后获取另一个(或相同的)模型并将其发送回View.

  • View是显示模型的东西,并提供捕获用户输入的组件.(它通常是Web应用程序中的模板引擎,或桌面应用程序中的UI组件).

在谈论3层(或n层)应用程序时,我们讨论的是整个应用程序的体系结构,它由表示层(整个MVC),服务层(业务类)和数据访问层组成.

服务层(以及后面的所有)隐藏在MVC的控制器后面.


use*_*253 7

什么是3层架构?

三层(层)是一种客户端 - 服务器体系结构,其中用户界面,业务流程(业务规则)以及数据存储和数据访问是作为独立模块开发和维护的,或者通常在不同的平台上.基本上,有3层,第1层(表示层,GUI层),第2层(业务对象,业务逻辑层)和第3层(数据访问层).这些层可以单独开发和测试.

DAL - 数据访问层(它具有Connectionstring和数据读取和执行过程)

BOL - 业务对象层(它有查询)

UI - 用户界面(表单和代码隐藏)

更多细节:3层建筑

  • 好吧,除了它充其量只是问题的一半.你可以使用MVC吗? (2认同)

OCD*_*Dev 6

3层体系结构是线性的,客户端层实际上从未与数据层实际通信 - 所有通信都通过中间层.另一方面,MVC更加三角形,其中视图向控制器发送更新并从模型接收更新,并且控制器更新模型.

(参见http://en.wikipedia.org/wiki/3-tier_architecture上的"与MVC架构的比较" )

  • 我相信你从维基百科复制了这个答案.如果你引用你的来源,那就更好了."检查与MVC架构的比较"段落@http://en.wikipedia.org/wiki/3-tier_architecture (3认同)

san*_*eev 6

IMO 没有 3层体系结构和MVC之间的直接比较.两者都是结合使用,因此我们倾向于通过相同的镜头看到它们.从概念上讲,它们不需要一起使用.我可以使用使用MVC提供的3层架构.

我没有详细说明定义部分,但简而言之:

3层是一种软件架构方法,其中用户界面,业务流程是逻辑,数据层是独立开发的,最常见的是在不同的平台上.

MVC已经在一段时间内从软件模式发展到架构模式,现在在所有主要框架中都可以看到.


ket*_*iya 6

每个应用程序都有以下几个层次:1)表示层或UI层2)业务层或业务逻辑层3)数据访问层或数据层

3层架构通常将每个层由网络分隔开.IE表示层位于某些Web服务器上,然后通过网络与后端应用服务器通信以获取业务逻辑,然后再通过网络与数据库服务器通信,也许应用服务器也会呼叫某些远程服务器服务(比如Authorize.net进行支付处理).

有时我们需要更多的上述类型的层和更多的机器,然后它被称为N层

MVC是一种编程设计模式,其中代码的不同部分负责在某些应用程序中表示模型,视图和控制器.这两件事是相关的,因为例如Model层可能有一个内部实现,它调用数据库来存储和检索数据.控制器可以驻留在网络服务器上,并远程调用应用程序服务器以检索数据.MVC抽象出应用程序架构如何实现的细节. 模型在其模型中,我们想建立 视图意味着应用程序的UI 控逆变部件,控制应用程序的逻辑

3层只是指实现的物理结构.这两个有时会混淆,因为MVC设计通常使用3层架构实现.