关于MVC模式(架构模型)与Web 三层模型的区别

newnew003 2010-07-26 09:05:31
在此之前,小弟已经在网上查找了一些相关的文章,但还是有点疑问还没有解决,请大家来帮帮忙

对于MVC 的概述这里就不在详细说明了,不过有点提的是
MVC 原本是用于桌面程序的(可以有状态的程序,而不象web 那样无状态),后来现在大家都用在web 上了

如果MVC 是用在有状态的程序里(桌面程序里)的话,我还好理解他们根本的区别:
MVC里有一个Observer的设计,也就是说一个数据模型发生变化,对应注册事件的视图就同步变化,因为web里是没有状态的,所以我就不知道这个Observer模式还有没有作用


MVC层 与 Web 三层模型(我到现在还没有知道这个三层模型在国外标准术语是什么)的区别如下:
为了大家好理解我把部分的东西写成是代码


var MVC = (Model , View , Controler 三层); //MVC 层的定义
var Web = (逻辑层 , 数据层 ,UI 层) = (BLL,DAL,View);//Web三层的定义,其中还少了一层叫Model层

MVC.View = Web.View = (界面层,专门负责把业务数据库以不同的方式显示出来);
MVC.Model = (业务逻辑+数据逻辑);
MVC.Controler = (在MVC.View 与 MVC.Model两者之间作一个中介者,作一个 处理请求/请求处理结果 的转发器 );

Web.View = MVC.View;
Web.DAL = (数据库访问层,负责底层数据物理处理);
Web.BLL = (业务逻辑层,负责概念上的数据逻辑处理,通常由Web.View 来调用发出请求,然后获取结果来显示UI);
Web.Model = (数据结构定义层,负责定义物理数据映射到程序的实际结构) = ORM;

以下是进行判断:

if( MVC.Model==(Web.BLL + Web.DAL) ) { //如果MVC.Model 层是等于 Web三层里的逻辑层 + 数据层的话


//那么 MVC.Controler 跟 Web.BLL怎么那么相似??? 那岂不是MVC.Controler 在web 上是重复了?

//我看过一段用javascript 来实现mvc 的代码
//地址: http://www.alexatnet.com/content/model-view-controller-mvc-javascript
//里面的代码就是MVC.Controler充当了 Web三层模型里的逻辑层即 Web.BLL



}else{ //如果MVC.Controler 的职责没有重复的话(显然这个条件才成立的,但是也要有依据)

//那么Web 三层模型 跟 MVC 架构模型 有什么区别???
}


...全文
715 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoya1 2011-09-07
  • 打赏
  • 举报
回复
MVC就是三层架构,而传说中的三层架构是一种思想,是没有标准的,而MVC就制定了一种标准,你按MVC的标准办就行了
hunluntanlaizhe 2011-09-06
  • 打赏
  • 举报
回复
MVC层 与 Web 三层模型区别?
我是这样理解的,我觉得这个不用放在一起比较,你也说了MVC是Model , View , Controler。
就是说你写代码的时候,要尽量做到在你的代码把m部分v部分和c部分分开,给你自己也给读你代码的人
一个很好的环境,方便你代码的利用率。
web三层模型是你不得不,也就是你非要这样做的。很像你在单机上写的代码,把他分成MVC这样的形式
。但是,你既然要上网,你就不希望你的网页里带着实现的细节。人家客户的电脑也不一定能读的动,所以
也就有你说的web三层模型了。区别你也可以这样说,我做单机的代码没必要web服务器吧,没必要数据库
服务器吧。
  • 打赏
  • 举报
回复
以只能维护自己的状态的控件 --> 以智能维护自己的状态的控件

asp.net mvc没有什么技术含量。当然作为新的版本,它一定集成了微软一些新的东西(比如它的路由机制是在asp.net4.0版本才让webform共享)。但是总的来说,它已经没有什么技术含量了。很简单地,比如说对于交互式很复杂的界面应用,程序员几乎要在controler的编程中去大量考虑界面问题,并且要不断手动去查询数据库、重新生成界面(而不是由自动管理状态的控件自动去省城),用户随便修改页面上一个状态(例如修改label的前景颜色)程序员也要自己去写状态管理和数据保存代码,这跟java里边的mvc方式web编程是一样的。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pavee 的回复:]
楼主很是用心,但我觉得透点教条,它们之间不好去一一对应,因为微软并没有给出统一的Web三层模型。web开发J2EE用Spring来实现MVC, ASP.NET最好用MVP。如果你就是想在微软的平台上实现MVC,你可以直接用ASP.NET MVC这个新的Framework,这样你可以省好多时间。
[/Quote]

微软原来的asp.net,是为程序提供一个模仿winform编程体验的、以只能维护自己的状态的控件组成的事件驱动(MVP)编程模式。但是到了2007年左右,也许是受了flash和jquery的强烈刺激,asp.net基本上不再发展了,微软在jquery和silverlight两个方向发展Web编程。asp.net这两年看来主要是模仿低级的java和php中的web编程,目的是接收从那里出走的web程序员。
  • 打赏
  • 举报
回复
什么乱七八糟的?

MVC是40多年前为第一个图形界面应用程序所确立的应用程序图形处理模块与其控制和数据部分的分离模式。而所谓三层模式是指整个网络系统模式。这两个没有什么对等的。MVC只不过是在讨论表现层里边的编程模式,顶多在表现层里又划分出三层了。而常说的三层,则不是指MVC中的层概念。
ycproc 2011-07-24
  • 打赏
  • 举报
回复
两个不同的东西 甘本上

三层 是 相互依赖的

M V C 是独立的 各自工作自己的东西
似水流年 2011-07-21
  • 打赏
  • 举报
回复
呵呵,mvc结构也得应用三层结构的东西呀
比如说
modal+dal+bll+contrller+view
也是不错的结构了,你说这样的话算什么结构呢???
tyrcui 2011-07-12
  • 打赏
  • 举报
回复
mvc也可以用分层的概念设计
这两者有什么可比性呢?
cjh200102 2010-08-11
  • 打赏
  • 举报
回复
其实都 是为了项目开发更顺利便捷。
maoliangcai 2010-08-05
  • 打赏
  • 举报
回复
.net 技术交流群 互相学习 加下 谢谢
hztltgg 2010-08-05
  • 打赏
  • 举报
回复
分层就是为了解耦,但是三层和mvc是完全不同的两个概念,毫无可比性而已

平时写代码,界面和逻辑分开是基本需求了,再从逻辑里独立出一个持久化数据的功能,这就是三层了。这三个分别作为三个独立的项目,在加上传递与各层之间的业务模型,可能的话还可以用接口。

MVC是只是界面的分层V是看见的,C是输入的,这都是三层里UI层的功能,M是模型,当不只是说三层里那个业务模型,而是业务逻辑层,数据访问层,模型的总称。
  • 打赏
  • 举报
回复
这个话题挺有意思。不过在这方面经验不多,体会不深。三层结构似乎主要强调是“各管各”,业务层的主要任务似乎就是接收界面层的数据请求,返回数据,怎么显示就不管了,那是界面层的事。
而MVC里的Controller,似乎要管一下怎样显示。比如,asp.net mvc里的控件和服务端的数据有一定的绑定关系。如果用到ajax的话,那么对于输入界面的控制就更大了。
至于两者有什么优缺点,体会太浅,说不大上来。
pavee 2010-08-05
  • 打赏
  • 举报
回复
楼主很是用心,但我觉得透点教条,它们之间不好去一一对应,因为微软并没有给出统一的Web三层模型。web开发J2EE用Spring来实现MVC, ASP.NET最好用MVP。如果你就是想在微软的平台上实现MVC,你可以直接用ASP.NET MVC这个新的Framework,这样你可以省好多时间。
Valefish 2010-07-27
  • 打赏
  • 举报
回复
2个不同的东西
看看百度大婶吧
claymore1114 2010-07-27
  • 打赏
  • 举报
回复
这两个 没什么关系。要学的话,mvc更难点。
tianxueshan2010 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 newnew003 的回复:]
两种架构都是把
数据显示 , 业务处理 , 底层处理 都变成 松偶合了
都可以把 界面设计人员,做功能的程序员,核心数据处理程序员 分工了

再问一个 同时熟悉 Jsp 跟 Asp.net 的高手:
MVC 跟 Web 三层模型的优点缺点有什么重要的区别吗??

我相信这个区别显然是有很大的区别的,要不然微软 也不会半途出家也来一个 MVC框架
[/Quote]学习一下了
newnew003 2010-07-26
  • 打赏
  • 举报
回复
是不是我学习所参照的例子,确切说是那个javascript mvc 实例的文章,有问题??
newnew003 2010-07-26
  • 打赏
  • 举报
回复
两种架构都是把
数据显示 , 业务处理 , 底层处理 都变成 松偶合了
都可以把 界面设计人员,做功能的程序员,核心数据处理程序员 分工了

再问一个 同时熟悉 Jsp 跟 Asp.net 的高手:
MVC 跟 Web 三层模型的优点缺点有什么重要的区别吗??

我相信这个区别显然是有很大的区别的,要不然微软 也不会半途出家也来一个 MVC框架



13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧