您的位置:首页 > 运维架构 > 网站架构

(引用qghboy)MVC 与三层架构的区别

2010-05-19 09:46 363 查看
 

举个小例子来解释一下MVC 与三层架构的区别,看了很多人分不清楚,心里觉得不爽  

大家应该对 WebForm 都比较了解

假如 有一个文件 叫作 index.aspx 就会有一个 index.aspx.cs 相对应
页面显示内容都显示在 index.aspx 里面 ,而代码都写在 index.aspx.cs 里面
是页面和代码捆绑在一起的,事件都是用回发方式处理,假如说index.aspx 里面的一个按妞Button,并有他的Button_Click()事件,当我们发现我们错了,不再需要这个按妞的时候,那么我们在删除Button的时候同时也要删除Button_Click()事件,那么当我们发现,有大量的这种错误时,那么我们不管是 index.aspx和index.aspx.cs都要重写,那么当你废除index.aspx的同时,基本上 index.aspx.cs 也被废除了,

也就是说实际上这种模式并没有做到"显示"和"代码"分离机制,有的只是表面上的把二种代码分开写而于,

而MVC恰恰可以解决这个问题,
而在MVC里面若有一个index.aspx文件 只作显示用,而代码呢?不再是相对应的一个index.aspx.cs文件了,而是集中放置在同一个类文件中(即控制器中),用一个方法过程对应这个 index.aspx 页面,当你请求这个index.aspx文件时,会默认提前请求这个方法处理数据,并把所有 index.aspx页面中要显示的数据都提前取好,并且存放在 例示于 Session 的 ViewData 中,然后再回转到index.aspx页面,这时index.aspx显面只要取出 Session 或 ViewData 里面的数据就可以了,也就是这个时候 index.aspx 才真真意义是只是显示而于了.所有事件都用提交方式交给 控制器处理 控制器处理好后 再跳转到我们所需要的页面中来,

即 MVC 中的 V 和 C 只是用来取代 WebForm 中的 aspx 及 aspx.cs 文件的处理方式而于
对于M ( MOdel ) ,它即可以是空也可以包罗万象,可以把所谓的三层架构, N层架构,什么BLL,DAL 等等都通通的放在 MOdel里面来

所前面有位童鞋说的很好 MVC 只是显示模式 和 三层架构根本不搭架,如果有需要 你可以把三层架构加进来

如果你再不明白,那你就记住 MVC 在结构上等同于 "aspx 和aspx.cx"地位 与三层结构无关
或者说 MVC 充当了 三层架构中的 "显示层"
(这话很牵强,但是可以让人很好区分和理解三层架构和MVC的区别)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc webform button session c