雷靜
摘要:隨著移動互聯技術的發展,農產品銷售也進入互聯網時代。該項目是一個農產品電商平臺,具有多種客戶端:網頁,手機網頁,Android客戶端,IOS客戶端,微信小程序等。該文主要研究Android端應用程序的架構設計。根據項目的特點及要求,對多種Android網絡通信框架,Android圖片加載框架進行比較后,選擇Volley框架負責與服務器端進行網絡通信;選擇Gson框架實現JSON數據與Java對象的轉換;選擇Fresco框架完成大量商品圖片的下載和緩存。通過在項目中引入多種框架,使得系統的架構設計更加高效,更加合理。
關鍵詞:Android程序;Volley;Gson;Fresco
中圖分類號:TP311.52? ? ? ?文獻標識碼:A
文章編號:1009-3044(2019)24-0282-02
開放科學(資源服務)標識碼(OSID):
在我國鄉村振興戰略的指引下,移動互聯技術迅速融入農業發展的各個方面,農產品的銷售途徑也因此有了很大的變化。從單一的實體銷售,向移動電子商務的方向迅猛發展起來。為了方便用戶的使用,利用移動互聯技術,電子商務平臺為用戶提供電腦網頁、手機網頁和APP,或是微信小程序等多種訪問方式實現農產品信息的快速、便捷地購買。
1 系統整體設計
本電子商務平臺的后臺采用Struts2,Spring框架設計完成,分為商家、顧客、管理者三類用戶。商家具有申請開店、編輯商品信息、商品上架、商品下架、商品發貨等功能;顧客具有瀏覽商品,加入購物車、編輯購物車、編輯收貨地址、付款、查看個人信息,查看訂單等功能;管理者可以管理用戶,查看訂單、查看商品、審核商家等功能。
根據當前的用戶需求和技術發展趨勢,提供多種訪問方式:電腦網頁、手機網頁、App、小程序。用戶對某系統依賴度較低,使用頻次較少時,更愿意選擇手機網頁或是小程序的方式,其主要優點是不需要下載安裝,不占存儲空間。但這些方式的缺點是不能記錄用戶登錄狀態,使用時需要登錄,或是因為條件限制功能不夠完善。基于Android系統的App是其中重要的一種訪問方式。Android手機是當前手機用戶的主要選擇,因此一款基于Android的App仍然是一個應用系統的必備用戶訪問方式。
2 Android端設計
在Android端主要供農產品購買者使用,實現的功能主要包含三大模塊:個人管理、商品瀏覽、購物管理。用戶通過個人管理模塊可以實現用戶登錄與退出,修改密碼,查看個人信息,管理收貨地址等功能;商品瀏覽模塊主要包含首頁、商品分類查詢,商品列表,商品詳情展示等功能;購物管理模塊包含添加商品到購物車,支付管理,訂單管理等功能。
在項目的架構設計上,項目分成模型層、接口層、核心層、界面層。模型層封裝所有的實體類。在Android程序與服務器端交換數據格式是JSON對象,在Android程序中需要轉換為Java對象。這個轉換比較復雜,流程比較煩瑣,采用數據解析框架簡化步驟,提高效率。在接口層完成Android程序調用服務器提供的API,需要控制網絡的訪問與服務器的連接。在核心層在接口層和界面層之間,負責處理業務邏輯。界面層主要負責向用戶展示商品,提供操作交互的窗口。為了提高效率,構建統一的界面風格,采用Fragment類和Activity類相結合的方式設計完成。
3 網絡訪問框架
本系統需要Android端與服務器進行頻繁的數據交互,傳統的兩種方法HttpURLConnection和HttpClient使用率非常高。但是這兩種方法使用起來稍顯復雜,如果封裝得不適當會造成極大的代碼重復,甚至會影響程序的穩定性[1]。Android平臺上有很多網絡通訊的框架:Volley,Retrofit,OKHttp等獲得廣泛的應用。
Volley是Google推出的異步網絡請求框架和圖片加載框架,特別適合數據量小,通信頻繁的網絡操作。OkHttp是Square公司推出的高性能 http 請求開源庫,但使用的時候稍顯復雜[2]。Retrofit是Square公司出品的基于OkHttp封裝的一套RESTful網絡請求框架。該框架使用注解進行配置,方便簡化程序[3]。Retrofit功能強大,但門檻較高;OkHttp性能較高,但需要再次封裝;Volley封裝更好,不適用于較大數據的發送。綜合各方面考慮,本系統采用Volley框架完成網絡層的網絡通信工作。
4 數據轉換框架
本系統采用服務器/客戶端的結構,服務器與客戶端需要頻繁交互數據,因此必須選擇一種數據量小、安全、通用的數據格式作為傳輸的載體。JSON作為一種輕量級的數據交換語言, 具有安全、快速、通用、數據通信量小等特性, 這讓JSON成為理想的數據通信方式[4]。但是在Android應用程序與服務器進行數據交互的過程中,需要將JSON格式與Java對象進行轉換,這個轉換是很煩瑣的。為了提高效率,在本項目中采用Gson框架實現數據轉換。Gson是Google提供的用來進行數據JSON格式化和JSON數據解析的開源庫[5]。通過Gson框架,一個復雜煩瑣的解析過程只需要幾行代碼就可以實現轉換,可以獲得非常好的封裝性和效率,使用簡單。
5 圖片加載框架
電商平臺需要展示較多的圖片,圖片需要占用較多的內存。當用戶在瀏覽商品頁面時,通常會需要快速展示大量圖片,直接訪問圖片將會導致卡頓,用戶體驗不佳,甚至出現內存溢出。在Android中有許多優秀的開發框架,它們有封裝了較好的算法和緩存策略,可以解決各種圖片加載引起的問題,比較常見的圖像處理框架有[6]:Android Universal Image Loader是一個加載、緩存、展示圖片的庫,但已停止更新,不建議使用;Picasso是著名的開源組織Square出品的圖片下載和緩存的框架,使用者較多;Glide是Google的員工基于Picasso開發,優化的,Android官網推薦使用的圖片處理框架;Fresco是Facebook開源的圖片處理框架,真正做到了三級緩存,功能強大。
由于本項目的需要下載和緩存大量各種不同大小、分辨率的商品圖片,因此選擇Fresco框架進行圖片的加載。Fresco中有一個叫作Image Pipeline的模塊。它負責從網絡,從本地文件系統,本地資源加載圖片。為了最大限度節省空間和CPU時間,它含有3級緩存設計。Fresco中有一個叫作Drawees模塊,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標圖片[7]。當圖片不再顯示在屏幕上時,它會及時地釋放內存和空間占用。
6 總結
在Android應用程序的開發中,出現了許多優秀的開源框架,利用這些框架可以有效地提高效率,簡化步驟,獲得較高的性能。本項目是一個農產品電商銷售平臺,需要頻繁與服務器進行數據交互,需要加載大量的圖片。根據項目特點,在整體設計上采用了Volley框架實現網絡通信訪問,采用Gson框架簡化JSON與Java對象的轉換,采用Fresco框架有效下載和緩存圖片。這樣的系統架構設計能夠有效提高系統的效率,簡化開發的過程,具備較好的可用性和用戶體驗性。
參考文獻:
[1] 孟遠. Android 網絡通信框架 Volley 的解析和比較[J]. 軟件, 2014, 35(12): 66-68.
[2] VaFlower. Android主流常用網絡請求框架簡介[EB/OL]. https://www.jianshu.com/p/2bbfc27cffeb.2018.4.4.
[3] SHERLOCKvv. 網絡加載框架 – Retrofit[EB/OL]. https://www.jianshu.com/p/0fda3132cf98.2018.1.8.
[4] 趙鵬, 駱德漢, 梅領亮. 一種基于JSON的Android終端遠程獲取解析數據的方法[J].微型機與應用, 2017, 36(21): 57-60.
[5] 李海平, 陳榮征, 李海文. 基于JSON的Android校園助手研究與設計[J]. 電腦與電信, 2016(16): 24-26.
[6] Yoo-jeong SONGSoo-bin OUJong-woo LEE. An Analysis of Existing Android Image Loading Libraries: Picasso, Glide, Fresco, AUIL and Volley[C]. Proceedings of 2016 International Conference on Informatics, Management Engineering and Industrial Application (IMEIA 2016), 2016(4).
[7] Fresco[EB/OL]. https://www.fresco-cn.org/.
【通聯編輯:謝媛媛】