小智 34
3层是架构风格,MVC是设计模式.
那是不同的.
但我们可以在3层架构风格中使用mvc模式.
所以:
表示层:MVC模式中的"控制器和视图".
业务层 :MVC模式的"模型(数据)".
数据访问层:原始数据访问层.
Mic*_*ins 28
在较大的应用程序中,MVC是仅N层架构的表示层.模型视图和控制器仅关注表示,并使用中间层使用来自数据层的数据填充模型.
MVC还可以用作整个3层体系结构,其中Views是您的演示文稿,控制器是您的业务逻辑,模型是您的数据层(通常由DAL(如实体框架)生成).
理想情况下,您希望您的控制器变得粗糙和愚蠢,将逻辑传递给"业务组件",这实际上将成为您的中间层.
小智 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架构的一部分).
谢谢.
两者之间没有关系.MVC是表示层模式.整个模型 - 视图 - 控制器存在于表示层中.
模型是对象持有数据(通常只是VO),它们由View表示,或者从View填充.
控制器是获取请求的(并且可以填充模型)并调用服务层.然后获取另一个(或相同的)模型并将其发送回View.
View是显示模型的东西,并提供捕获用户输入的组件.(它通常是Web应用程序中的模板引擎,或桌面应用程序中的UI组件).
在谈论3层(或n层)应用程序时,我们讨论的是整个应用程序的体系结构,它由表示层(整个MVC),服务层(业务类)和数据访问层组成.
服务层(以及后面的所有)隐藏在MVC的控制器后面.
什么是3层架构?
三层(层)是一种客户端 - 服务器体系结构,其中用户界面,业务流程(业务规则)以及数据存储和数据访问是作为独立模块开发和维护的,或者通常在不同的平台上.基本上,有3层,第1层(表示层,GUI层),第2层(业务对象,业务逻辑层)和第3层(数据访问层).这些层可以单独开发和测试.
DAL - 数据访问层(它具有Connectionstring和数据读取和执行过程)
BOL - 业务对象层(它有查询)
UI - 用户界面(表单和代码隐藏)
更多细节:3层建筑
3层体系结构是线性的,客户端层实际上从未与数据层实际通信 - 所有通信都通过中间层.另一方面,MVC更加三角形,其中视图向控制器发送更新并从模型接收更新,并且控制器更新模型.
(参见http://en.wikipedia.org/wiki/3-tier_architecture上的"与MVC架构的比较" )
每个应用程序都有以下几个层次:1)表示层或UI层2)业务层或业务逻辑层3)数据访问层或数据层
3层架构通常将每个层由网络分隔开.IE表示层位于某些Web服务器上,然后通过网络与后端应用服务器通信以获取业务逻辑,然后再通过网络与数据库服务器通信,也许应用服务器也会呼叫某些远程服务器服务(比如Authorize.net进行支付处理).
有时我们需要更多的上述类型的层和更多的机器,然后它被称为N层
MVC是一种编程设计模式,其中代码的不同部分负责在某些应用程序中表示模型,视图和控制器.这两件事是相关的,因为例如Model层可能有一个内部实现,它调用数据库来存储和检索数据.控制器可以驻留在网络服务器上,并远程调用应用程序服务器以检索数据.MVC抽象出应用程序架构如何实现的细节. 模型在其模型中,我们想建立 视图意味着应用程序的UI 控逆变部件,控制应用程序的逻辑
3层只是指实现的物理结构.这两个有时会混淆,因为MVC设计通常使用3层架构实现.