asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

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


发布日期:2023年09月12日
 
ASP.NET谈三层结构与MVC模式的区别

在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则是游戏卡带他绝定了我玩的是什么游戏是魂斗罗还是超级玛莉而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏卡带中可能会有游戏代码和存储单元都根据游戏的需要而设计

上一篇:ASP.NET中使用Treeview和XML

下一篇:Win 2000下ASP.NET的配置