文档章节

谈谈MVC与微信

franos
 franos
发布于 2016/02/22 19:41
字数 887
阅读 38
收藏 0

最近被问到一个问题,"用mvc谈谈微信的架构设计",下面是我的总结

1、对MVC的理解

mvc指的是模型(M—Module),视图(View),控制器(Control)。一般情况下,M指一个项目的存储结构,存储数据模型以及业务业务数据模型,V指的是用户与系统的交互接口,也叫做表现层,这里对用户体验考虑较多,C代表用户从视图接口接入的真正功能,掌管业务功能的变现,也叫逻辑层,三个层次间用接口定义交互边界,用工厂产生具体的实现,可以有效地减少耦合,提高迭代效率和开发效率等。


2、从MVC视角看微信

用mvc的视角看待微信这个项目,可以用mvc对微信做一个大概的分级,其中可以将微信客户端整个看成一个v层,微信服务器由M,C结合。


3、从MVC视角浅谈微信

考虑到微信客户端变更成本过高的问题,将逻辑重心放到服务器,即服务器处理数据的流入流出和对客户端提供接口,客户端主要负责展示效果。服务器在不能有效优化的阶段前提下,可以将不是服务器必要的具体实现逻辑交由客户端实现,避免服务器增加重复判断(例如:服务器对android、ios、wp客户端的各种消息统一协议,具体消息的处理交由客户端识别处理)。客户端可以使用混合编程,即一部分使用java原生代码,一部分通过webview的衍生使用网页展现,可以减少客户端的开发实现和更新成本,忽略必要的质量监控逻辑和容灾逻辑以及必要的版本区分逻辑,这一部分代表整个项目的V层。


4、MVC是什么

真正开发一个微信所要控制的边界会更加严格,对客户端、服务器也会根据具体的业务要求进行进一步的划分和拓展,如客户端可以划分为mvp模式,对每一个功能界面提供一个更具体的服务,服务器也可以对具体功能划分更多的层次,对具体的由网页实现的业务划分成mvvm模式等,微信的版本更迭速度是很快的,那么微信必有极快的业务迭代实现能力,其每一个层次,每一个功能必然是有较高的拓展能力和较强的边界规范,对每个功能进行分而治之的思想,这也是MVC模式的思想所在。所以,从微信看来,MVC就是一种约束、拓展、分而治之的思想,MVC不适用所有的项目开发,但其思想是对所有项目有益的。我觉得这就是MVC在当今业界所存在的意义,微信不会使用固定的几种开发模式,其项目结构的成立和演变,必然是从其产品的重心以及相关业务产生的,但不管是什么样的项目,什么样的模式,MVC的思想—约束、拓展、分而治之一定是应用其中的。


© 著作权归作者所有

franos
粉丝 1
博文 17
码字总数 11754
作品 0
广州
程序员
私信 提问
谈谈MVC模式

如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软件...

monroeCode
2016/12/26
3
0
谈谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论。 MVC模式就是架构模式的一种,它对我的启发特别大。我觉得它不仅适用于开发软...

阮一峰
2007/11/08
0
0
Java项目经验——程序员成长的钥匙

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1、掌握项目开...

SXTkaifa
2016/11/07
14
0
谈谈UI架构设计的演化

转自:http://weibo.com/p/1001603808855434892996 了解整个由来,受益匪浅 在1979年,经典MVC模式被提出。 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来...

文艺小青年
2017/08/10
0
0
BAT面试笔记

1、亿级日志中,查找登陆次数最多的十个用户 解题思路:先用哈希表保存登陆次数和ID,然后用红黑树保存最大的十个数。 2、说说你对 OC 中 load 方法和 initialize 方法的异同。 主要说一下执...

背锅侠
2016/04/18
159
0

没有更多内容

加载失败,请刷新页面

加载更多

一个简单易用的Linux文本编辑器:nano的安装与使用

许多状况下咱们都必要编纂云主机里的文本情节,而现时用的比力多的文本编纂器是vim,这个估量许多人都以为很难用,这边伏笔VPS引荐一个简略易用的文本编纂器nano,比vim简略许多,很轻易上手...

shzwork
20分钟前
1
0
go recover

异常、错误常见语言处理 一般语言都有其错误处理方式,就以鄙人熟悉的php来距离吧。 PHP有多个级别的错误处理方式,以防止程序在还未正确执行完毕时,就造成了程序的提前结束。 try/catch/fi...

o0无忧亦无怖
38分钟前
0
0
玩转混合云+边缘计算,且看ZStack Mini!

文章导读:2019年4月16日,ZStack新品和合作伙伴战略发布会上,面向集团客户和边缘场景需求,ZStack重磅推出ZStack Mini超融合一体机(以下简称:ZStack Mini)和ZStack多云管理平台(以下简...

ZStack社区版
40分钟前
1
0
springboot 整合redis

springboot整合redis官方是有文档的: 英文看不懂可以翻译,代码应该看得懂, 这个是自动注入的。当然也可以xml注入,手动配置。 整合步骤: pom文件: <!-- spring boot web --> ...

jason_kiss
44分钟前
2
0
手机耗电问题,大部分是没有正确使用这个“锁”

当安卓设备闲置时,设备很快会进入休眠状态,以达到省电和减少CPU占用的目的。但有些应用在手机灭屏甚至系统休眠时,依然频繁占用CPU处理事件或唤醒屏幕提示用户消息,这类行为会导致手机耗电...

安卓绿色联盟
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部