[知了开发]“知了”APP整体设计
2016-07-19 23:06
459 查看
写在前面
“知了”这款APP的业务逻辑是技术框架的前提,如果还没有用过“知了”的,不如先试试http://blog.csdn.net/wsrspirit/article/details/51751568
业务有两个主要场景,主要是按照学生在校园生活的社交维度划分,一个是以整个学校为单位,一个是以院、班等团体为单位。学校为单位的消息来源主要是整合常见网站信息,而团体单位则依赖学生主动添加组织并主动发送。好了现在可以来说我们的技术框架了
总体设计
主要由Android平台,服务器和信息平台三部分组成。Android平台主要包括通信模块和控制显示平台,通信模块负责与服务器进行数据交换,控制显示平台即为与用户交互的界面,显示各种信息。服务器主要由通信模块、功能模块、爬虫模块和数据库模块组成。通信模块负责与Android端连接并交换数据;功能模块实现用户请求的登录注册、获取分类信息、接收分类信息和推送提醒的功能;爬虫模块主要通过IP代理技术从多信息平台获取信息,并进行分类;数据库模块通过关系映射模块和数据存取模块实现信息的高效准确存取。
服务器设计
服务器使用SpringMVC作为服务器框架;MVC模式的一些组件还是很容易看懂;爬虫使用WebMagic,Service通过ScheduleTask定时启动爬虫,WebMagic中实现了IP代理,数据挖掘和数据分类功能,爬取得到的数据通过MyBatis完成数据存储;数据持久化层使用MyBatis框架,MyBatis完成MySQL到Model的关系映射,并将数据存储至MySQL;数据库使用MySQL,MySQL负责数据的存储以及读取。
Android设计
移动端使用Android作为移动端平台,移动端则是MVP模式;移动端解析网络请求没有使用开源框架如LiteHttp或Valley,而是自己实现;使用UrlHttpConnection发送GET和POST请求并接受返回数据,接收的数据通过Gson进行数据解析,通过LRUCache + SoftReference + Disk对图片进行缓存;数据持久化层使用GreenDAO框架,GreenDAO完成Sqlite子模块到Model子模块的关系映射,并将数据存储至Sqlite;移动端的数据库使用Sqlite,Sqlite负责数据的存储以及读取。
技术难点
目前我们资源受限,或者说用户量不大,所以服务器整体配置在一个war中,这就要求SpringMVC能够与WebMagic融入一个工程。服务器开发就是SpringMVC+MyBatis的基本开发
因为知了覆盖了用户、团体和消息之间的关系,所以数据库的表设计还是有一定的难度,尤其是在后面对于数据库的优化方面,学习了很多
爬虫这里坑就更多了,首先是如何反爬,之后就是如何实现增量爬虫(这里的增量是指第二次对于第一次的增量)。还有就是爬虫对于服务器资源耗费,这个也能说很久
个人信息管理,负责用户的auth,个人资料等
Android开发中的难度,像多层View的点击事件覆盖,ListView优化,网络通信的处理,图片信息优化,但是最主要的是对于AlarmManager的保活。
RPC+反射 实现通信
好了,关于“知了”的基本设计和技术难点也就这么多啦,当然这么皮毛的东西肯定看的不过瘾,我会依次详细的介绍我在开发中遇到的问题,使用的开源框架,还有就是会详细的写一篇关于“知了”的优化篇,一定会让你吸收到一些经验。
相关文章推荐
- 个人信息安全报告发布:有 APP 每分钟调用位置权限 1468 次
- 下载量超过一亿的流行应用被发现含有恶意模块
- 苹果与Siri的七年之痒:“宫斗”戏码不断上演
- APP添加CNZZ统计插件教程 Android版添加phonegap
- C#实现流程图设计器
- 详解js中构造流程图的核心技术JsPlumb(2)
- Android APP与媒体存储服务的交互
- java实现收藏名言语句台词的app
- 修改Android App样式风格的方法
- Android App数据格式Json解析方法和常见问题
- 微信APP支付Java代码
- 通过Html网页调用本地安卓(android)app程序代码
- 百度地图API提示230 错误app scode码校验失败的解决办法
- 详解js中构造流程图的核心技术JsPlumb
- js判断移动端是否安装某款app的多种方法
- PHP实现批量生成App各种尺寸Logo
- Could not load file or assembly "App_Licenses.dll"的问题
- Android桌面组件App Widget用法入门教程
- 开源电商app常用标签"hot"之第三方开源LabelView