摘要:本篇主要针对Google I/O 2010当中提到的Android REST Client架构做个解析,对比说明Google提出的最佳Android REST Client架构的优势。

一.传统REST客户端架构分析

传统的REST客户端的层次架构如图1.1所示。

图1.1 架构图

层次结构图简述:

(1) 当用户对资源做出操作(增删改查)时,在Activity里开个独立线程进行REST请求。

(2) 线程执行REST请求,用相应的REST方法从REST服务上取得相应的数据。

(3) 将取得的数据交给相应资源的Processor解析出资源的内容。

(4) 将解析出的资源的内容直接放入相应的模型中,即存在内存中。

(5) 最后用Cursor去取内存中的数据。

架构劣势:

(1) 系统可能会随时强制关闭程序。由于Android系统是为有限资源的手机设计的操作系统,这就意味着如果系统要启用一个新程序,又没有内存了,它就会强行关闭一个不在用户屏幕上而运行着的程序,很可能这个REST客户端就被杀掉了,这时候如果已经执行了GET等REST方法,则所有的数据都会下载,但没法被显示,带宽被浪费了。

(2) 下载的数据存储在内存上。这使得可能会重复从REST服务器上请求数据,这会浪费手机CPU资源,浪费电池,浪费带宽,同时造成REST服务器上大量的请求。

二.Google I/O上提出的REST客户端架构

系统架构的具体层次结构如图2.1所示。

图2.1 系统模块的具体层次结构图

层次结构图简述:

(1) 由用户在Activity上所做的操作(如增、删、改、查)和相应的被操作的资源的REST服务URI组合成表达式树

(2) 将表达式树传给SyscAdapter解析

(3) SyscAdapter解析后决定用相应的REST方法从REST服务上取得相应的数据

(4) 将取得的数据交给相应资源的Processor解析出资源的内容

(5) 将解析出的资源内容放入SQLite数据库相应的表中

(6) 完成数据入库的操作以后,向发出请求的Activity发出重新读取数据库的提醒,则该Activity用Cursor来重新读取数据库显示请求数据给用户

本章针对传统REST客户端架构进行劣势分析,然后对Google提出的REST客户端架构进行简单的解析,简要说明为何此套架构可以解决传统REST客户端架构的问题。

下一章开始将针对Google I/O提出的REST客户端架构如何实现做实践讲解……..