刚开始学习MVC模式的时候,很容易将两个混为一谈,觉得两者一个是中文描述,一个是英文描述(哈哈,很奇怪当时的想法),当深入了解后,发现根本不是一回事啊,遂将两者做一下总结:
1. 从概念上来说:
三层架构是一个分层式的软件体系架构设计,适用于任何一个项目。而MVC是一种设计模式,它是根据项目的具体需求来决定是否使用这个设计模式 。从一个项目开始,首先需要进行架构设计,一般采用分层式的架构设计,即三层架构。在确定了架构设计之后,会根据具体的需求去考虑是否需要应用设计模式,比如说MVC模式,抽象工厂模式等等。即项目的开发是先确定软件的架构设计,再根据具体的需求决定是否使用相关设计模式,从这里可以看出三层架构和MVC设计模式不是一个等级的。
2. 从划分层次上说:
①三层架构将整个项目分为:
表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候所看到的界面
业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
②MVC即Model(模型),View(视图),Controller(控制)。
3.产生的背景:
①三层架构:所有应用程序都是用来处理数据的,程序的入口数据可以通过接口交互式输入或者从磁盘等地方读取,程序的输出结果作为现实或存储在磁盘上。上世纪九十年代之前,除了大型的系统外,应用程序读取处理并存储数据都是在一台机器上进行的。但是,从九十年代起,由于数据的爆炸性增长,一台机器上可以存储的数据不能满足应用程序的需求。于是,人们对原有程序进行了水平分层,将数据分离到数据库服务器上,应用程序从网络上读取数据。这就是 2-tiers 架构,客户端应用程序和数据库服务器。这种架构依然存在一些缺点,例如,无法缓解支持很多应用程序的客户端的负载; 客户端越来越复杂; 客户端和服务器之间频繁的通信对带宽要求高,限制了网络的大小等。总的来说就是,由于原有业务的复杂度提升,客户端和服务器端的职能需要调整,从而实现负载均衡,使系统具有良好的伸缩性。客户端的应用程序用于展示,是展示层,业务层进行逻辑运算的支持,数据层存储和操作数据。由于这种架构对原有程序进行了分层,不同的层运行在不同的机器上,所以可以非常自然地支持分布式开发。
②MVC设计模式:针对对用户界面进行管理的程序的职责混乱导致代码难以维护的情况,它将对数据的操作 M 与对视图V的操作分离开,用C 逻辑作为二者的粘合剂。
参考文章:https://www.zhihu.com/question/21851341