最近被问到一个问题,"用mvc谈谈微信的架构设计",下面是个人总结java
一、对MVC的理解android
mvc指的是模型(M—Module),视图(View),控制器(Control)。通常状况下,M指一个项目的存储结构,存储数据模型以及业务业务数据模型,V指的是用户与系统的交互接口,也叫作表现层,这里对用户体验考虑较多,C表明用户从视图接口接入的真正功能,掌管业务功能的变现,也叫逻辑层,三个层次间用接口定义交互边界,用工厂产生具体的实现,能够有效地减小耦合,提升迭代效率和开发效率等。ios
二、从MVC视角看微信web
用mvc的视角看待微信这个项目,能够用mvc对微信作一个大概的分级,其中能够将微信客户端整个当作一个v层,微信服务器由M,C结合。编程
三、从MVC视角浅谈微信服务器
考虑到微信客户端变动成本太高的问题,将逻辑重心放到服务器,即服务器处理数据的流入流出和对客户端提供接口,客户端主要负责展现效果。服务器在不能有效优化的阶段前提下,能够将不是服务器必要的具体实现逻辑交由客户端实现,避免服务器增长重复判断(例如:服务器对android、ios、wp客户端的各类消息统一协议,具体消息的处理交由客户端识别处理)。客户端可使用混合编程,即一部分使用java原生代码,一部分经过webview的衍生使用网页展示,能够减小客户端的开发实现和更新成本,忽略必要的质量监控逻辑和容灾逻辑以及必要的版本区分逻辑,这一部分表明整个项目的V层。微信
四、MVC是什么架构
真正开发一个微信所要控制的边界会更加严格,对客户端、服务器也会根据具体的业务要求进行进一步的划分和拓展,如客户端能够划分为mvp模式,对每个功能界面提供一个更具体的服务,服务器也能够对具体功能划分更多的层次,对具体的由网页实现的业务划分红mvvm模式等,微信的版本更迭速度是很快的,那么微信必有极快的业务迭代实现能力,其每个层次,每个功能必然是有较高的拓展能力和较强的边界规范,对每一个功能进行分而治之的思想,这也是MVC模式的思想所在。因此,从微信看来,MVC就是一种约束、拓展、分而治之的思想,MVC不适用全部的项目开发,但其思想是对全部项目有益的。我以为这就是MVC在当今业界所存在的意义,微信不会使用固定的几种开发模式,其项目结构的成立和演变,必然是从其产品的重心以及相关业务产生的,但无论是什么样的项目,什么样的模式,MVC的思想—约束、拓展、分而治之必定是应用其中的。mvc