陸成茂 黃淳嵐 楊曉慧 盧翰霖 徐彬 金海潮 樂光學(xué)
摘要:移動(dòng)云投影系統(tǒng)采用三層體系結(jié)構(gòu),MVP開發(fā)模式,設(shè)有客戶端、服務(wù)端和管理端;主要業(yè)務(wù)有兩種:一是客戶端將數(shù)據(jù)發(fā)送到服務(wù)端,二是客戶端向后臺(tái)發(fā)送請(qǐng)求,由后臺(tái)服務(wù)器向服務(wù)端推送數(shù)據(jù)。該文通過介紹系統(tǒng)的各個(gè)組成結(jié)構(gòu)及其業(yè)務(wù)流程,以及相關(guān)技術(shù)的應(yīng)用,講述整個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì)。
關(guān)鍵詞:三層體系結(jié)構(gòu);MVC框架;無線投屏;Android應(yīng)用架構(gòu)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)10-0062-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Architecture Dsign of Wireless Screen Switching System Based on Android
LU Cheng-mao1,HUANG Chun-lan1,YANG Xiao-hui2,LU Han-lin1,XU Bin1,JIN Hai-chao1,YUE Guang-xue1
(1. Jiaxing University, Jiaxing 314001, China; 2. School of Science, Jiangxi University of Science and Technology, Ganzhou 341000, China)
Abstract: Mobile cloud projection system adopts three-layer architecture, MVP development mode, with client, server and management end; There are two main businesses: one is that the client sends data to the server; the other is that the client sends a request to the background, and the background server pushes data to the server. This paper introduces the structure of the system and its business process, and the application of related technology, the architecture design of the whole system.
Key words: three tier C/S structure; MVC framework; wireless projection screen; Android application architecture
1 概述
Android操作系統(tǒng)的源代碼是半開放的,主要嵌入于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦等。它的內(nèi)核屬于Linux內(nèi)核的一個(gè)分支,是Andy Rubin最先開始進(jìn)行開發(fā)的,最開始主要是支持手機(jī)[1]。
移動(dòng)互聯(lián)網(wǎng)發(fā)展快速,微處理器技術(shù)也是發(fā)展迅猛。安卓手機(jī)在性能上逐年接近PC機(jī),智能手機(jī)的功能逐步多樣化,不再僅是用來進(jìn)行普通的語音通話和短信發(fā)送,已經(jīng)更多的應(yīng)用于娛樂和一些辦公場(chǎng)合。如音視頻通訊、移動(dòng)支付、移動(dòng)監(jiān)控等逐漸進(jìn)入民眾,給人們的生活帶來不可替代的便捷應(yīng)用。
移動(dòng)應(yīng)用滿足著人們的衣食住行等各個(gè)方面,給人們提供了很大的便利。本文是主要對(duì)“移動(dòng)云投影系統(tǒng)”的基本架構(gòu)及其系統(tǒng)的規(guī)劃與分析進(jìn)行闡述。
2 架構(gòu)
2.1 MVC開發(fā)模式
MVC的M代表模型,V代表視圖,C代表控制器,它們?nèi)齻€(gè)的組合——是一種業(yè)務(wù)邏輯、數(shù)據(jù)、可視界面分離的組織代碼的方法,將業(yè)務(wù)邏輯集中到組合的三個(gè)部件中的一個(gè)里面,在進(jìn)行優(yōu)化或者用戶的個(gè)性化定制時(shí),就不需要再重新編寫一個(gè)新的業(yè)務(wù)邏輯,且一個(gè)模型可以對(duì)應(yīng)多個(gè)可視界面[2-4]。MVC框架如圖1所示。
MVC的設(shè)計(jì)思想,是不同的部件擁有不同的職責(zé),各部件各司其職,將數(shù)據(jù)、可視界面的顯示與控制互相獨(dú)立,簡化代碼,提高復(fù)用,降低維護(hù)成本,提高開發(fā)者的UI設(shè)計(jì)開發(fā)效率。
Model包括了程序的業(yè)務(wù)規(guī)則、業(yè)務(wù)邏輯、還有數(shù)據(jù)等,用于保存實(shí)例數(shù)據(jù)。Model數(shù)據(jù)模型是JavaBean實(shí)體類,可以用一個(gè)實(shí)體類來表示客觀世界中具有相同屬性的事物。如一只小狗,通過定義和實(shí)例化Dog類表示。狗擁有的技能如進(jìn)食、奔跑、伸舌頭等就是類的方法,通過業(yè)務(wù)邏輯來編寫。
View就是用戶所看到的可進(jìn)行操作的界面,視圖界面,就是model數(shù)據(jù)模型的具體表現(xiàn)形式。它的主要任務(wù)是向用戶展示數(shù)據(jù)以及接受用戶的輸入,因?yàn)樵趯?shí)際運(yùn)營過程中,用戶通常是看不到Model部分的。用戶只能看到開發(fā)人員想讓他們看到的內(nèi)容,通過view向用戶展示和交互。
Controller是MVC中的核心部分,是溝通model和View的橋梁。視圖界面和數(shù)據(jù)實(shí)例的更新都是依靠Controller控制和調(diào)度,因?yàn)镸odel和View之間不能直接通信,在應(yīng)用程序需要完成一個(gè)業(yè)務(wù)時(shí),它們又必須要合作共同才能完成。于是,Controller就作為控制者,決定使用哪些model,并進(jìn)行什么操作,該為view準(zhǔn)備什么數(shù)據(jù)等。
2.2 MVP開發(fā)模式
MVP是一種軟件框架級(jí)的設(shè)計(jì)架構(gòu),是從MVC開發(fā)模式演變而來。MVP為每個(gè)視圖view定義抽象接口,再用這些接口標(biāo)識(shí)視圖view所支持的model。邏輯上等效的視圖,在所有平臺(tái)上擁有相同的接口,表示器通過這些接口與視圖view進(jìn)行交互[5]。
在MVC模式中,Activity作為安卓開發(fā)的核心組件,不僅承擔(dān)視圖View,同時(shí)也有Controller控制器的內(nèi)容,這無疑是增加了代碼的耦合度。當(dāng)項(xiàng)目發(fā)展到一定程度,MVC開發(fā)模式的項(xiàng)目,開發(fā)和維護(hù)會(huì)變得麻煩。而在MVP模式中,因?yàn)锳ctivity的UI邏輯被抽象成了View接口,業(yè)務(wù)邏輯抽象成了Presenter接口。View接口和Presenter接口的設(shè)計(jì)簡化了Activity的工作,降低耦合度,方便進(jìn)行單元測(cè)試,同時(shí)因?yàn)楹笈_(tái)線程對(duì)Activity的引用而導(dǎo)致的“Activity的資源無法被系統(tǒng)回收,發(fā)生內(nèi)存泄露的問題也能得到規(guī)避。
3 系統(tǒng)規(guī)劃與分析
3.1 系統(tǒng)架構(gòu)規(guī)劃
移動(dòng)云投影系統(tǒng)采用三層C/S的軟件系統(tǒng)體系結(jié)構(gòu),所有安卓設(shè)備連接上同一無線AP,無線AP作為交互橋梁,聯(lián)合構(gòu)成局域網(wǎng)的通信結(jié)構(gòu),保證文件傳輸?shù)乃俣取Mㄟ^對(duì)數(shù)據(jù)流的處理,將安卓手機(jī)的屏幕顯示內(nèi)容同步繪制到投影儀的屏幕上,達(dá)到實(shí)時(shí)同屏的效果[6-7]。
系統(tǒng)以Pad平板電腦為管理端,以手機(jī)等移動(dòng)終端為用戶端,投影儀為服務(wù)端,使用無線WiFi連接技術(shù),將用戶端當(dāng)前屏幕顯示的信息(如演示的PPT、照片、視頻等)同步傳輸?shù)酵队皟x,投影儀再將其進(jìn)行投影,實(shí)現(xiàn)實(shí)時(shí)投屏展示。
系統(tǒng)的主要功能為屏幕分享和廣告投放,分別對(duì)應(yīng)了系統(tǒng)的兩種使用模式:多用戶單投屏和單用戶多投屏。管理端可以管理和查看其在投影儀投放的音視頻在各個(gè)投影儀上的投放實(shí)況。
業(yè)務(wù)流程:①多用戶單投屏;②單用戶多投屏。
①賬戶登錄-選擇業(yè)務(wù)-屏幕分享-輸入正確密鑰-進(jìn)入會(huì)議間-請(qǐng)求投影-獲取管理員同意-開始投影-結(jié)束投影
②賬戶登錄-選擇業(yè)務(wù)-廣告投放-添加廣告-瀏覽文件-選擇文件類型-選擇單次時(shí)長(若是視頻選擇視頻播放的開始時(shí)間到結(jié)束時(shí)間)-選擇投影儀-備注-完成添加-開始投放。
在實(shí)現(xiàn)移動(dòng)終端和投影儀進(jìn)行一對(duì)一的信息交互時(shí),提供藍(lán)牙和WiFi兩種連接模式,以便移動(dòng)終端和投影儀在無網(wǎng)絡(luò)環(huán)境下進(jìn)行信息交互展。
3.2 多用戶單投屏模式
由作為系統(tǒng)服務(wù)端的智能投影儀打開socket服務(wù)端口,管理員——Pad使用管理口令連接智能投影儀,用戶——智能手機(jī)通過用戶口令連接智能投影儀,用戶向Pad發(fā)出投屏請(qǐng)求,Pad同意后,手機(jī)開始向智能投影儀傳輸屏幕信息數(shù)據(jù)流,投影儀接收并同步播放,以達(dá)到同屏效果,如圖2所示。
3.3 單用戶多投屏模式
智能投影儀打開服務(wù)端口,用戶通過口令驗(yàn)證連接相應(yīng)的智能投影儀,智能手機(jī)向智能投影儀傳輸影音文件,智能投影儀就收文件后,若無特定情況按照預(yù)先設(shè)置好的算法進(jìn)行先排序后循環(huán)播放,特殊情況下管理端pad也可以任意改變播放順序,以達(dá)到用戶需求。如圖3所示。
通過Android 的File類,智能手機(jī)向投影儀傳輸文件,從安卓投影儀上獲取到本地的存儲(chǔ)空間,達(dá)到文件傳輸?shù)男Ч?。投影儀再使用播放器解碼播放,達(dá)到廣告投放的效果[8]。
4 緩沖機(jī)制
圖像數(shù)據(jù)緩沖采用雙緩存的機(jī)制。在投影儀端的程序上設(shè)置兩個(gè)緩沖區(qū),接收來自智能手機(jī)端的影音文件。雙緩沖是一種良好的能夠防止動(dòng)畫閃爍的緩沖機(jī)制,同時(shí)是一種多線程應(yīng)用。其實(shí)很簡單,就是在主線程外另開一條線程,用于繪制當(dāng)前幀的后一幀圖像即可,在獨(dú)立的幀緩存空間中繪圖不會(huì)影響到當(dāng)前播放的幀。
雙緩沖技術(shù)的使用,以及多線程的應(yīng)用可以提高動(dòng)畫的流暢度,對(duì)于改善播放效果非常有用。這樣,在雙緩沖和多線程結(jié)合使用下,系統(tǒng)的投影儀端可以一邊接收用戶傳輸過去的圖像數(shù)據(jù),一邊播放幀緩沖區(qū)A中畫好的圖像的同時(shí),在幀緩沖區(qū)B中繪制下一張要播放的圖像,這樣可以避免重畫造成的閃爍,在前后兩張圖的切換上幾乎沒有延時(shí),使用戶完全感覺不到畫面切換 [9]。
5 服務(wù)器與邏輯處理
建立后臺(tái)服務(wù)器,使系統(tǒng)能夠在遠(yuǎn)程的情況下投放廣告,同時(shí)擴(kuò)展系統(tǒng)的業(yè)務(wù)邏輯處理能力。系統(tǒng)服務(wù)器采用分布式服務(wù)器,應(yīng)用程序、數(shù)據(jù)庫、文件三者得以運(yùn)行。此處也根據(jù)情況而定,系統(tǒng)用戶較少時(shí),用一個(gè)服務(wù)器將三者包括。
文件服務(wù)器需要存儲(chǔ)用戶上傳的內(nèi)容,需要較大的存儲(chǔ)空間,隨著用戶增多,數(shù)據(jù)庫的存儲(chǔ)空間不足,就會(huì)出現(xiàn)用戶訪問受到影響的情況,此時(shí)進(jìn)行應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)器分離。如圖4所示。
系統(tǒng)用戶增多后,服務(wù)器就需要具備更強(qiáng)的業(yè)務(wù)邏輯處理能力,保證業(yè)務(wù)處理的響應(yīng)速度;面對(duì)逐步增多數(shù)據(jù)的處理,普通的服務(wù)器沒辦法及時(shí)處理眾多請(qǐng)求應(yīng)答,故引出邏輯服務(wù)器。
在一臺(tái)代理服務(wù)器后面掛N臺(tái)邏輯服務(wù)器,因?yàn)樗械挠脩粽?qǐng)求只需要針對(duì)代理服務(wù)器,并不關(guān)心其具體的工作流程;代理服務(wù)器把請(qǐng)求消息負(fù)載到不同的邏輯處理區(qū)上進(jìn)行處理,待邏輯處理器完成后,將結(jié)果返回給代理服務(wù)器,再由代理服務(wù)器返回處理結(jié)果給用戶,這樣就可以達(dá)到邏輯服務(wù)器的應(yīng)用效果[10]。
發(fā)展到了一定程度,由于用戶數(shù)量大,操作消息多,此時(shí)還需設(shè)置一個(gè)消息路由關(guān)系,消息路由可以將信息劃分為不同類型的信息,發(fā)送給不同的邏輯服務(wù)器上,減少時(shí)間上的浪費(fèi),使得消息處理更加靈活,同時(shí)為了使得信息不丟失,使用邏輯服務(wù)器共享信息。
6 結(jié)束語
移動(dòng)云投影系統(tǒng)運(yùn)用了安卓、Java、無線WLAN技術(shù)及Android Studio軟件的應(yīng)用開發(fā)。開發(fā)出來的系統(tǒng)基本上實(shí)現(xiàn)了手機(jī)WiFi文件傳輸、文字通訊、屏幕共享等功能。MVP開發(fā)模式降低了各部件間的耦合度,增強(qiáng)了代碼的可測(cè)試性,雖然對(duì)于小型程序而言,開發(fā)成本有所提高,但同時(shí)也提高了應(yīng)用程序的可擴(kuò)展性,為后續(xù)的再開發(fā)留下了足夠的空間和良好的重塑基礎(chǔ)。
參考文獻(xiàn):
[1] 胡偉. Android系統(tǒng)架構(gòu)及其驅(qū)動(dòng)研究[J]. 廣州廣播電視大學(xué)學(xué)報(bào), 2010, 10(4):96-101.
[2] 高昂, 魏惠茹, 李曉東, et al. MVC設(shè)計(jì)模式研究[J]. 電腦知識(shí)與技術(shù), 2016, 12(1):88-89.
[3] 劉娜, 劉如起. MVC模式在Android開發(fā)上的應(yīng)用研究[J]. 山東工業(yè)技術(shù), 2017(3):137-137.
[4] 劉姝君, 左樂. MVC模式下的應(yīng)用軟件開發(fā)框架初探[J]. 通訊世界, 2017(5):281-282.
[5] 王念橋. 應(yīng)用MVP模式改進(jìn)軟件架構(gòu)[J]. 計(jì)算機(jī)時(shí)代, 2012(4):37-38.
[6] 徐鵬. 基于Socket的無線數(shù)據(jù)傳輸?shù)尿?qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù):學(xué)術(shù)交流, 2018(2Z):105-109.
[7] 何文彥. 基于Android的屏幕分享控制系統(tǒng)的研究[D]. 西安:西安工業(yè)大學(xué),2016.
[8] 尹揆. 投影廣告系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京交通大學(xué), 2013.
[9] 曾麒. MFC中雙緩沖處理貼圖閃屏問題[J]. 科技信息, 2011(3):68-68.
[10] 陳杰.服務(wù)器端分布式存儲(chǔ)與負(fù)載均衡算法[D]. 廣州:廣東工業(yè)大學(xué), 2016.
【通聯(lián)編輯:謝媛媛】