知识大全 浅谈三层结构与MVC模式的区别

Posted 结构

篇首语:孙竹新添绿玉枝,稚禽学习绕檐飞。动中会取归根意,雨过白云横翠微。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈三层结构与MVC模式的区别相关的知识,希望对你有一定的参考价值。

浅谈三层结构与MVC模式的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

  有朋友提到游戏主机提供的卡带插槽的接口 在设计中 有时也由Control提供一组接口 以用于Model或View的实现 这样就形成了依赖 一般来说这样设计也没有太大的问题 只是会提高模块间的耦合度 也会带来一些侵入性 为了更完美 可以不用接口来提供契约 可以用配置信息(或称元数据信息)+反射来提供契约 那么这个类接口就可以退化到只要符合CLS就可以了 也就是普通的类 就像现在的计算机接口广泛采用USB 无论是U盘 打印机 扫描仪或者是加密狗 他们都是普通的USB设备而已

  提到USB有一个题外话 模块的可插拔性设计甚至是热插拔设计 系统可以在不停止运行的情况下动态的挂载或移除模块 动态挂载模块需要系统能够自动发现新模块并根据自描述的信息进行自动配置 移除可能情况更复杂一点 需要 安全删除硬件 类似的功能

cha138/Article/program/net/201311/15628

相关参考

知识大全 浅析MVC模式与三层架构的区别

浅析MVC模式与三层架构的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  浅析MVC模式与三

知识大全 浅谈ASP.NET开发下的MVC设计模式的实现

浅谈ASP.NET开发下的MVC设计模式的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 三层Web体系结构里的两种数据绑定模式

三层Web体系结构里的两种数据绑定模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言  本

知识大全 浅谈ASP.NET MVC中的FluentHtml与连续接口

浅谈ASP.NETMVC中的FluentHtml与连续接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 在PHP中使用MVC模式进行开发

在PHP中使用MVC模式进行开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  软件结构发展过程

知识大全 浅谈对.NET MVC框架的理解

浅谈对.NETMVC框架的理解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  近来我发现有很多关

知识大全 浅谈ASP.NET MVC Membership权限机制

浅谈ASP.NETMVCMembership权限机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 浅谈ASP.NET MVC中TempData的实现机制

浅谈ASP.NETMVC中TempData的实现机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 浅谈基于URL的权限控制ASP.NET MVC中的实现

浅谈基于URL的权限控制ASP.NETMVC中的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 商业模式和盈利模式有什么区别

商业模式和盈利模式有什么区别????盈利模式指按照利益相关者划分的企业的收入结构、成本结构以及相应的目标利润。商业模式就是你企业或公司是以什么样的方式来盈利和赚钱的。构成赚钱的这些服务和产品的整个体系