移动客户端数据流驱动的程序框架
数据流驱动这个描述有点拗口,我们姑且认为是有一种应用程序,其大部分交互严重依赖后台服务器的提供服务接口。这种应用的特点就是在使用过程中需要发出大量的网络请求。根据这个特点让我们一步一步来分析,然后得出较好的框架结构。
1, 外层结构是什么?
比较流行的有MFC经常使用的MVC框架,界面层和数据层分离,使用中间控制层去链接彼此,微软在WP开发中提出MVVM,也是该类框架变种,说到底就是把界面层和数据层分离如下图,本文也根据MVVM做出示例。

这样一个简单的外层框架有了,既然我们重点突出数据层,那是不是得有点变化,看下图。

我们多了一个HttData,该层主要工作就是获得ViewModel能认识的数据。这也是本文的重点。
2, HttpData的输入输出是什么?
HttpData的输入是服务类型,你可以用枚举定义多种服务类型,每一种分别对应一个网络地址,输出则是Model结构体。
3, HttpData的功能?
功能包括从网络获取数据,解析数据。所以我们又拆分成两个小模块,一个是网络模块WebService,一个是解析模块DataParser。网络模块可以认为是工具类,要保证网络模块的功能垂直化,即尽量不将业务相关的逻辑放到网络模块中。

解析模块则是业务模块,是网络数据和应用内部数据的桥梁,当然如果网络数据和应用内部数据的结构以及规范是一致的,那解析模块的功能就会很小,甚至可忽略,实际的情况是网络数据的格式,林林总总,可能有多个后台服务提供给应用,所以解析模块就是非常重要的了,这一层过滤了多个后台服务的结构差异性,保证上层应用数据的连贯性。那怎么做到的呢?
再看下图

到这里解析模块是不是就清楚了,一种数据类型对应一个解析类,如果未来要增加后台服务,则增加解析类,增加数据结构model,或者复用现有的。到这里解析类内部其实也不用多加介绍了,功能就是把应用程序不认识的string串或者stream流变换成程序认识的结构。
以上,实际的项目中会比这个复杂一些,但是基本的脉络就是这样,我们知道一个灵活的框架能保证项目易于维护,有时候我们甚至不用思考就可以知道在哪里添加逻辑,这对于有一定规模的团队更加重要,希望对您有帮助。
浙公网安备 33010602011771号