[知了开发]“知了”APP整体设计

写在前面

“知了”这款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负责数据的存储以及读取。

技术难点

  1. 目前我们资源受限,或者说用户量不大,所以服务器整体配置在一个war中,这就要求SpringMVC能够与WebMagic融入一个工程。
  2. 服务器开发就是SpringMVC+MyBatis的基本开发
  3. 因为知了覆盖了用户、团体和消息之间的关系,所以数据库的表设计还是有一定的难度,尤其是在后面对于数据库的优化方面,学习了很多
  4. 爬虫这里坑就更多了,首先是如何反爬,之后就是如何实现增量爬虫(这里的增量是指第二次对于第一次的增量)。还有就是爬虫对于服务器资源耗费,这个也能说很久
  5. 个人信息管理,负责用户的auth,个人资料等
  6. Android开发中的难度,像多层View的点击事件覆盖,ListView优化,网络通信的处理,图片信息优化,但是最主要的是对于AlarmManager的保活。
  7. RPC+反射 实现通信

好了,关于“知了”的基本设计和技术难点也就这么多啦,当然这么皮毛的东西肯定看的不过瘾,我会依次详细的介绍我在开发中遇到的问题,使用的开源框架,还有就是会详细的写一篇关于“知了”的优化篇,一定会让你吸收到一些经验。

猜你喜欢

转载自blog.csdn.net/WSRspirit/article/details/51960147