商会资讯

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博连接

一步搞定

搜索
热搜: 活动 交友 discuz

ASP.NET三层结构与MVC模式的区别

已有 1957 次阅读2010-8-11 09:36

在csdn和园子里有朋友谈到三层与mvc的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题。

  那么我也来讲讲我对这两者的理解吧。

  首先对这个题目,本身是存在问题的,“xx结构”与“xx模式”的区别?请问中国社会制度与美国人生活方式有什么区别?

  这两者本身讲的是不同方向与角度的问题,在实际应用中他们的确存在一些相似的特点,在很多书籍中也没有深入讲解,以致于造成困惑,为了更好的理解他们,姑且来说说区别吧。

  首先n层结构是一种软件抽象的层次结构,是对复杂软件的一种纵向切分,每一层次中完成同一类型的操作,以便将各种代码以其完成的使命作为依据来分割,以将低软件的复杂度,提高其可维护性。一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。三层结构是n层结构的一种,是人产在长时间使用中得出来的一种应用场合广泛的n层结构,被当作一种典型的软件层次结构而广为流传甚至写入教科书。

  mvc模式是一种复合设计模式,一种在特定场合用于解决某种实际问题来得出的可以反复实践的解决方案。巧合的是他也有三个事物组成,于是乎人们就有了一种想当然的对应关系:展示层-view;业务逻辑层-control;持久层-model。首先mvc中的三个事物之间并不存在明显的层次结构,没有明显的向下依赖关系,相反的,view和model往往是比较独立的,而control是连接两者的桥梁,他们更像是横向的切分。这样一来就出现一个结果,mvc中每个块都是可以独立测试的,而三层结构中,上层模块的运行测试势必要提供下层代码或者提供相同接口的桩。相对来说,mvc复杂得多,但是结构更清晰,耦合性更低。

  另外,mvc中每一块内部特别是model内部经常被设计为多层的。在我认为的一个良好的mvc模式构建的结构中,control是核心,小且较为稳定的,可以作为一个核心框架来提供,有扩展点,但基本上可以简单配置不需要任何代码就可以运行。而view则可能是一套或多种可选择的视图引擎,决定了软件展示给用于的界面,使用时的主要工作量在于扩展点以及根据需要而数量不同的视图模板。

  model则是业务提供者,决定了软件提供的功能,其内部可能是一些普通的类或者是实现了某些接口的类,在这一块当中可能根据业务的不同而色彩缤纷,对于复杂的软件可能会分成很多层,如业务逻辑层、业务提供层、系统提供层、数据提供层、数据访问层等。

  我经常用于比喻mvc的例子是小时候玩的那种卡带式游戏机,control是主机,一般来说我买一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。view则是电视机和游戏手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,要遥杆还是带震动的。model则是游戏卡带,他绝定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏代码和存储单元,都根据游戏的需要而设计。

收藏 分享邀请 转发到微博 举报

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

回顶部