日期:2014-05-20  浏览次数:20992 次

关于MVC模式(架构模型)与Web 三层模型的区别
在此之前,小弟已经在网上查找了一些相关的文章,但还是有点疑问还没有解决,请大家来帮帮忙

对于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 架构模型 有什么区别???
}



------最佳解决方案--------------------
两种架构都是把
数据显示 ,  业务处理 , 底层处理 都变成 松偶合了
都可以把 界面设计人员,做功能的程序员,核心数据处理程序员 分工了

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

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




------其他解决方案--------------------
是不是我学习所参照的例子,确切说是那个javascript mvc 实例的文章,有问题??
------其他解决方案--------------------
引用:
两种架构都是把
数据显示 , 业务处理 , 底层处理 都变成 松偶合了
都可以把 界面设计人员,做功能的程序员,核心数据处理程序员 分工了

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

我相信这个区别显然是有很大的区别的,要不然微软 也不会半途出家也来一个 MVC框架
学习一下了
------其他解决方案--------------------
这两个 没什么关系。要学的话,mvc更难点。
------其他解决方案--------------------
2个不同的东西
看看百度大婶吧
------其他解决方案--------------------
楼主很是用心,但我觉得透点教条,它们之间不好去一一对应,因为微软并没有给出统一的Web三层模型。web开发J2EE用Spring来实现MVC, ASP.NET最好用MVP。如果你就是想在微软的平台上实现MVC,你可以直接用ASP.NET MVC这个新的Framework,这样你可以省好多时间。
------其他解决方案--------------------
这个话题挺有意思。不过在这方面经验不多,体会不深。三层结构似乎主要强调是“各管各”,业务层的主要任务似乎就是接收界面层的数据请求,返回数据,怎么显示就不管了,那是界面层的事。
而MVC里的Controller,似乎要管一下怎样显示。比如,asp.net mvc里的控件和服务端的数据有一定的绑定关系。如果用到ajax的话,那么对于输入界面的控制就更大了。
至于两者有什么优缺点,体会太浅,说不大上来。
------其他解决方案--------------------
分层就是为了解耦,但是三层和mvc是完全不同的两个概念,毫无可比性而已

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