热门文章
电 话:023-6276-4481
邮箱:broiling@qq.com
地址:重庆市南岸区亚太商谷6幢25-2
作者:刘彦彬
链接:https://www.zhihu.com/question/21851341/answer/251629127
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
MVC 模式
产生背景:
对用户界面进行管理的程序的职责混乱导致代码难以维护。
解决方案:
将对数据的操作 M 与对视图V的操作分离开,用C 逻辑作为二者的粘合剂。
3-tiers 架构
产生背景:
所有应用程序都是用来处理数据的,程序的入口数据可以通过接口交互式输入或者从磁盘等地方读取,程序的输出结果作为现实或存储在磁盘上。上世纪九十年代之前,除了大型的系统外,应用程序读取处理并存储数据都是在一台机器上进行的。但是,从九十年代起,由于数据的爆炸性增长,一台机器上可以存储的数据不能满足应用程序的需求。于是,人们对原有程序进行了水平分层,将数据分离到数据库服务器上,应用程序从网络上读取数据。这就是 2-tiers 架构,客户端应用程序和数据库服务器。这种架构依然存在一些缺点,例如,无法缓解支持很多应用程序的客户端的负载; 客户端越来越复杂; 客户端和服务器之间频繁的通信对带宽要求高,限制了网络的大小等。
总的来说就是,由于原有业务的复杂度提升,客户端和服务器端的职能需要调整,从而实现负载均衡,使系统具有良好的伸缩性。
解决方案:
客户端的应用程序用于展示,是展示层,业务层进行逻辑运算的支持,数据层存储和操作数据。由于这种架构对原有程序进行了分层,不同的层运行在不同的机器上,所以可以非常自然地支持分布式开发。
联系:
- 初看起来比较像,容易搞混(如果这也算联系的话);
- MVC 模式可以用于3-tiers 架构的展示层。
区别:
关注的重点不同:
MVC 关注的重点在于表现层的代码组织方式,通过降低代码间的耦合度,使代码更改维护。
3-tires 关注系统的分布,便于提升系统性能,增加系统功能。
拓扑结构不同:
MVC 是可以三角结构,视图向控制器发送更新,控制器更新模型,视图可以直接从模型更新。
3-tires 一定是是线性结构,展示层即客户端不能直接与数据层通信,也就是说客户端展示层与数据层的通信必须经过中间层即业务层。