mvc和三层架构到底有什么区别 三层架构和mvc的区别是什么

作者&投稿:季顺 (若有异议请与网页底部的电邮联系)

MVC:是一种框架设计方式(Model View  Controller),是模型(model)-视图(view)-控制器(controller)的缩写。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。

1.模型(model)它是应用程序的主体部分,主要包括业务逻辑模块和数据模块。模型与      数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一  次就可以被多个视图重用,所以减少了代码的重复性。

2.视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成。

3.控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的作用。  

MVC优点:

1.降低代码耦合性。在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其他层中的代码。  

2.有利于分工合作。在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可进行开发视图层中的JSP,而对业务熟悉的人员可开发业务层,而其他开发人员可开发控制层。

3.有利于组件的重用。如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。

MVC缺点:

1.增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。  

2.视图层展示依赖与模型层,视图层需要很少的字段,但是模型层全部提供,性能上有一定影响

注意:mvc由于市场的需求,演变出三层框架

三层框架:按照高内聚低耦合的思想,形成一种标准的分层方式。分为三层:界面层(UserInterface layer)、业务逻辑层(BusinessLogic Layer)、数据访问层(Dataaccess layer)。

界面层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。

业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。

数据访问层:也称为是持久层其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。完成CRUD的操作,数据交互及落地。

按照标准创建项目:

View-》控制层-》业务层-》dao层----加上common公用类层

具体分层见下图:



我只说Java中的啊,mvc:m就是model层,v就是view ,c就是controller  ,《1.》如果不用框架,只用servlet,那么controller就是我们自己写的servlet代码,然后view就是jsp代码,model通常就是一个javaBean, 在service和dao层来回携带数据;上面就是mvc;三层指的是action(controller)  层,service层 dao三层;   

《2.》如果用框架struts,spring mvc,那么controller就是框架部分,我们通常写的是model模型部分,用它调用service层,view还是jsp,不知道你明白不?我给你两张图,希望你好好理解,

第一张是基于servlet和JavaBean的三层架构MVC ;第二张就是真正意义上的MVC三层架构,希望采纳啊,我是真心的回答你的



MVC和三层架构,是不一样的。
三层架构中,DAL、BLL、WEB层各司其职,意在职责分离。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。

MVC就是三层架构的一种实现
M对应了三层架构中的业务逻辑和数据
V对应了三层架构中的表示层也就差不多是界面的意思吧
C是指接收用户的操作后通过M和V完成用户的需求
不就一样么
反正我是这么理解的

三层架构其实是大家片面的理解的一个MVC,其实还有4层,5层……
等等说话!
知不是不是官方的说法而已!!

面试的一个问题.mvc和三层架构到底有什么区别~

MVC就是 模型-视图-控制器
MVC的目的就是将模型(业务逻辑)和视图(页面展示)分离,使模型和视图可以独立修改,而不影响对方
三层就是 数据访问层-业务逻辑层-表示层(一般还会有一个模型层,Model)
.NET的MVC是借用了JAVA的MVC模式,采用JAVA的MVC模式的优点结合.NET的三层的优点的一种设计模式。

三层架构将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
MVC 即Model(模型),View(视图),Controller(控制)。
下面看一下他俩的区别与联系:   

通过这个图我们可以知道,我们平常所说的V是UI,C是BLL,M是DAL的观点是错误的。
而我们通常所见到的MVC一般也都是在应用三层架构的基础上,即将Model层再进行分层。而如果Model不再进行划分的话,那么使用MVC的意义也就不大了。
然后,它俩的目的着重点不同。
三层架构的目的着重点是“高内聚,低耦合”,即解耦。
MVC的目的则是实现Web系统的职能分工,即职责划分。
其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
最后,为何我们会将其混为一谈?
既然两者有这么多的不同,我们为什么还总是将其混淆呢,下面我列举了几个我们常常将其混为一谈的几个原因:
1.二者都是“三层”。
这个原因是最容易迷惑我们初学者的,一个是UI,BLL,DAL,一个是View,Controller,Model,不都是三层吗?
虽然都是“三层”(不一定是真的三层,还可以是多层),但是它们的划分的不一样。大家可从上面的图中看出不同。
2.MVC总是伴随着三层架构。
这个就是我在前面一再强调的,我们一般是在考虑使用(也可以不使用)了三层架构的基础上再根据具体需求决定是否需要使用MVC,于是我们常说的MVC中总是伴随着三层架构,所以大家总是会认为MVC就是三层架构,三层架构就是MVC,殊不知,它们二者是一起出现的。
3.都是在分层,即都是在解耦。
前面说它们目的的时候也说了,虽然它们的侧重点不同,但是它们的总体目的是一样的,都是为了解耦,对于初学者而言,是不知道这两个侧重点有何不同的。
大家往往对它们的联系知道很多,不然也不会混为一谈,但是对它们的区别却知道较少,希望我上面讲解的它们两者之间的区别可以让大家对它们有些了解,如有写的不妥的地方,请指教。
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。
mvc可以是三层中的一个表现层框架,属于表现层。三层和mvc可以共存。
三层是基于业务逻辑来分的,而mvc是基于页面来分的。
MVC主要用于表现层,3层主要用于体系架构,3层一般是表现层、中间层、数据层,其中表现层又可以分成M、V、C,(Model View Controller)模型-视图-控制器
曾把MVC模式和Web开发中的三层结构的概念混为一谈,直到今天才发现一直是我的理解错误。MVC模式是GUI界面开发的指导模式,基于表现层分离的思想把程序分为三大部分:Model-View-Controller,呈三角形结构。Model是指数据以及应用程序逻辑,View是指 Model的视图,也就是用户界面。这两者都很好理解,关键点在于Controller的角色以及三者之间的关系。在MVC模式中,Controller和View同属于表现层,通常成对出现。Controller被设计为处理用户交互的逻辑。一个通常的误解是认为Controller负责处理View和Model的交互,而实际上View和Model之间是可以直接通信的。由于用户的交互通常会涉及到Model的改变和View的更新,所以这些可以认为是Controller的副作用。
MVC是表现层的架构,MVC的Model实际上是ViewModel,即供View进行展示的数据。 ViewModel不包含业务逻辑,也不包含数据读取。
而在N层架构中,一般还会有一个Model层,用来与数据库的表相对应,也就是所谓ORM中的O.这个Model可能是POCO,也可能是包含一些验证逻辑的实体类,一般也不包含数据读取。进行数据读取的是数据访问层。而作为UI层的MVC一般不直接操作数据访问层,中间会有一个业务逻辑层封装业务逻辑、调用数据访问层。UI层(Controller)通过业务逻辑层来得到数据(Model),并进行封装(ViewModel),然后选择相应的View.
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
MVC如何工作MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图V视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型M模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器C控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
模型Model 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。 实现具体的业务逻辑、状态管理的功能。
视图View 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 就是与用户实现交互的页面,通常实现数据的输入和输出功能。
控制器controller 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。起到控制整个业务流程的作用,实现View层跟Model层的协同工作。
3层架构指:表现层(显示层) 业务逻辑层 数据访问层(持久化)如果大家非要“生搬硬套”把它和MVC扯上关系话那我就只能在这里”强扭这个瓜”了即:V 3层架构中”表现层”aspx页面对应MVC中View(继承的类不一样)
C 三层架构中”表现层”的aspx.cs页面(类)对应MVC中的Controller,理解这一点并不难,大家想一想我们以前写过的 Redirect,当然它本身就是跳转了一些链接页面,而MVC中的Controller要做的更爽,它控制并显示输出了一个视图。即然所起到的作用都是对业务流程和显示信息的控制,只不过是实现手段不同而已。
M 3层架构中业务逻辑层和数据访问层对应MVC中Model(必定View和Controller已找到“婆家”剩下Model只能是业务逻辑层和数据访问层了)
为什么要使用 MVC大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化(自PHP5.0版本后已全面支持面向对象模型)语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。
首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用HTML来表示,但是它们也有可能要用Adobe Flash和WAP来表示。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序所重用。
因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松耦合的构件。
对我来说,控制器也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
拿一个简单的登陆模块说,需求是你输入一个用户名、密码,如果输入的跟预先定义好的一样,那么就进入到正确页面,如果不一样,就提示个错误信息。
V 这个小小的模块中,起始的输入用户名密码的页面跟经过校验后显示的页面就相当于View C 而这里还需要一个controller页面,就是用于接收输入进来的用户名密码,还有经过校验后返回的一个flg(此flg就是用于判断你输入的是否正确,而跳转到相应的页面的)
M 最后还缺一个Model,那么就是你那个用于校验的类了,他就是处理你输入的是否跟预先订好的一样不一样的,之后返回一个flg.这样就完全实现了逻辑跟页面的分离,我页面不管你咋整,反正我就一个显示,而controller呢也不管你Model咋判断对不对,反正我给你了用户名跟密码,你就得给我整回来一个flg来,而Medol呢,则是反正你敢给我个用户名跟密码,我就给你整过去个flg
m 提供数据,数据之间的关系,转化等。并可以通知视图和控制器自己哪些地方发生了变化。
v 提供显示,能根据m的改变来更新自己c 比如视图做了点击一个按钮,会先发给这个视图的控制器,然后这个控制器来决定做什么操作(让模型更新数据,控制视图改变)
mvc是一个复合模式mv,mc都是观察者模式m内部的组件组合模式vc之间是策略模式(可以随时更换不同的控制器)
————————————-
MVC模式是上世纪70年代提出,最初用于Smalltalk平台上的。
MVC是表现模式,是用来向用户展现的许多组建的一个模式(UI/Presentation Patten)
MVC有三种角色:Model:用来储存数据的组件(与领域模型概念不同,两者会相互交叉)
View:从Model中获取数据进行内容展示的组件。同样的Model在不同的View下可展示不同的效果。获取Model的状态,而不对其进行操作。
Controller:接受并处理用户指令(操作Model(业务)),选择一个View进行操作。
MVC概述:协作存在单向引用,例如Model不知道View和Controller的存在。View不知道Controller的存在。这就隔离了表现和数据。View和controller是单向引用。而实际中View和Controller也是有数据交互的。
MVC的重要特点是分离。两种分离:View和数据(Model)的分离使用不同的View对相同的数据进行展示;分离可视和不可视的组件,能够对Model进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)
View和表现逻辑(Controller)的分离Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。
MVC和三层架构MVC与三层架构类似么?
View-UI Layer | Controller-Bussiness Layer | Model-Data Access Layer其实这样是错误的MVC是表现模式(Presentation Pattern)
三层架构是典型的架构模式(Architecture Pattern)
三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可比性,是应用于不同领域的技术。

VC和VS区别
答:VS是VisualStudio,VC是VisualC++。VC和VS共有3点不同:1、两者的范围不同:VS是微软提供的一个工具集,由各种各样的工具组成。而VC是一个独立的C/C++的开发工具。2、两者包括的版本不同:VS包括vs2005、vs2008、vs2010等版本。VC包括vc6.0、vc2005、vc2008、vc2010等版本。3、两者提供编程平台...

养生堂VC和其他VC有什么区别吗?
答:1、原料上的区别 养生堂的维C是国内第一款全天然VC,全部来自巴西针叶樱桃;普通VC大多是合成VC或复合VC。2、功能上的区别 养生堂的维C,有双重效果。它是唯一具有“抗氧化,增强免疫力”双重保健功能的VC;普通VC只能补充VC,没有其它功能。3、成分上的区别 养生堂的维C无合成VC,无人工色素,还无防腐...

三层结构主要包括哪些类的设计及各类的主要作用
答:我的 三层结构主要包括哪些类的设计及各类的主要作用 想问一下三层结构有哪些类他们的作用希望给解答... 想问一下 三层结构有哪些类 他们的作用 希望给解答 展开  我来答 4个回答 #热议# 有哪些跨界“双奥”的运动员? 甫访波R0 2011-06-30 · TA获得超过183个赞 知道答主 回答量:444 采纳...

C和VC有什么区别?
答:C和VC的区别如下:1、概念上的区别 C是一种编程语言,是软件编程的一般规范,而VC是一种编程环境或工具。 VC是Microsoft公司在C的基础上提供一些Windows图形界面库。 可以说VC是C加上Windows图形库。2、学习方式上的区别 VC教科书假定用户已经掌握了C语言,假如没有C的基础,是无法了解有关MFC的任何...

“C语言”和“C++”的区别是什么?
答:2、为了降低编程难度,在C++的基础上又发展出了C#,C#的大部分语法与C++相同,编程环境完全不同,低层实现的机理也根本不同。3、在视窗操作系统中,编写实用程序,多数情况下用C++编程比用C编程工作量要减少十倍。4、在网络应用,特别是三层架构的网站编写方面,多数情况下用C#编程比用C++编程工作量要...

所谓的天然的vc和复合的vc有什么区别?
答:天然VC和复合VC成分没差别,两者在结构和功能上是完全一样的,在消化吸收上也没有任何区别。与复合VC相比,天然VC是从VC含量高的果蔬中获取,这个数量非常低,成本非常高,不适合大规模生产。天然VC一般会标明提取来源,而复合VC一般写的是维生素C或者抗坏血酸。对我们人类来说,VC是必不缺少的,我们...

VC和VB,还有C语言有什么区别
答:主要区别如下:一、VB和VC属于面向对象编程语言,C语言属于面向过程编程语言。二、VB属于解释执行,是一句一句翻译成指令执行的,执行速度比C语言和VC要慢,C语言和VC都是编译成目标文件再执行的。三、C语言和VC适合底层开发(就是更接近硬件层),而VB不适合做低层开发。四、用处 1、vc适用于需要效率高的...

C和C++具体区别?
答:C和C++区别为:结构不同、设计不同、函数库不同。一、结构不同 1、C语言:C语言结构只有成员变量,而没成员方法。2、C++:C++结构中可以有自己的成员变量和成员函数。二、设计不同 1、C语言:C语言进行过程化、抽象化的通用程序设计。2、C++:C++既可以进行C语言的过程化程序设计,又可以进行以抽象...

vb和vc有什么最大的区别?
答:VB是一种解释型语言,需要VB的一个运行库来支持解释执行VB程序的;VC是一种编译型语言,源代码要经过编译器编译成exe可执行文件才能执行。二者区别:可视化:VC++的可视化没有VB的好。核心:VB的核心语言是Basc语言,VC的核语言是C++语言。功能:VC功能比VB强大,VC的博大在于MFC的操纵,它是Win32API...

VC++、C、CC之间有什么区别
答:vc++是微软开发的C++开发工具,主要用于window平台的软件开发,但是合理的配置也可以编译linux或者android下的软件(需要对应的sdk或者gcc编译器)。针对window应用的开发,其提供了mfc库,可以提高window应用程序开发的速度和质量。一般应用于网络通信、UI开发、应用软件、服务软件等大中型软件项目开发 C不是C++...