馬世歡,魯華棟
(河南工業(yè)職業(yè)技術(shù)學(xué)院, 河南 南陽 473000)
隨著智能手機(jī)和平板電腦的使用越來越普及,智能移動設(shè)備正在改變我們的工作、學(xué)習(xí)和生活方式。無論是基于Web的E-Learning還是在移動設(shè)備上的學(xué)習(xí)都是對現(xiàn)有教育環(huán)境的有利支持,[1]它們都能夠使學(xué)生更加便利地獲取教育資源。而對于教育資源貧乏的地區(qū),具有更重要意義。
基于Android平臺的學(xué)習(xí)系統(tǒng)設(shè)計特點(diǎn)是采用SOA(面向服務(wù)的架構(gòu)),將教育內(nèi)容管理系統(tǒng)Moodle的學(xué)習(xí)環(huán)境整合進(jìn)Android系統(tǒng)中??紤]到移動設(shè)備的多樣性,未來可能需要開發(fā)iPhone和Windows Phone版本的客戶端程序。由于SOA具有良好的可擴(kuò)展性,[2]為支持不同的移動操作系統(tǒng)提供了良好的基礎(chǔ)。
如圖1所示,客戶端是一個Android應(yīng)用程序,服務(wù)器端是一個整合Moodle的應(yīng)用程序,一組Web服務(wù)作為客戶端和服務(wù)器之間的通信接口,客戶通過該接口和服務(wù)器端進(jìn)行數(shù)據(jù)傳遞。當(dāng)接收到一個請求后,Web服務(wù)訪問Moodle數(shù)據(jù)庫獲取數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行相應(yīng)的處理后發(fā)送回客戶端。通過Web服務(wù),客戶端能夠獲得Moodle中的關(guān)鍵資源,比如論壇、評價、消息、聊天、文件下載、提示、課程評級和公告等。
圖1 系統(tǒng)架構(gòu)
在客戶端的Android應(yīng)用程序中,對于系統(tǒng)提供的每個功能(論壇、評價、消息、聊天等),都包括一系列實(shí)現(xiàn)該功能的操作界面。每一個操作界面對應(yīng)一個負(fù)責(zé)控制該界面的Java類。最后,將每一個功能相關(guān)的Java類封裝到一個包中。
圖2用一個顯示課程列表的例子對應(yīng)用程序的執(zhí)行流程進(jìn)行了說明。系統(tǒng)通過ConnectionManager類來統(tǒng)一管理和web服務(wù)的調(diào)用關(guān)系,web服務(wù)通過CourseDAO類來獲取數(shù)據(jù)。圖中Maictivity、MFCA、Connection Manager為客戶端,即Android端,CourseDAO、Web Senvice為服務(wù)器端。執(zhí)行流程從客戶端的MainActivity類開始,該類負(fù)責(zé)顯示用戶可以參與的課程列表。首先,MainActivity類調(diào)用MFCA類中的方法來獲取課程集合,然后MFCA類將該請求提交給connectionManager類,connectionManager類通過調(diào)用Web服務(wù)將數(shù)據(jù)請求交給CourseDAO類處理。最后,在Moodle數(shù)據(jù)庫中執(zhí)行一個查詢,并將查詢結(jié)果按調(diào)用順序返回給Main-Activity,這樣MainActivity就可以顯示一個課程列表供用戶選擇。
圖2 執(zhí)行流程
客戶端的Andriod應(yīng)用程序使用Facade Pattern(外觀模式)來處理界面和connectionManager類之間的信息傳遞。Facade Pattern的主要作用是簡化客戶程序與子系統(tǒng)之間的交互接口,將復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)與客戶程序之間的依賴解耦。[3]結(jié)合本系統(tǒng)的情況,Android應(yīng)用程序中控制界面的類充當(dāng)客戶程序的角色,ConnectionManager類相當(dāng)于復(fù)雜子系統(tǒng)的一部分,而MFCA類則將這個復(fù)雜的子系統(tǒng)用一個簡單的接口暴露出來供客戶程序使用。圖3說明了Facade Pattern的使用情況。登錄模塊、課程模塊、論壇模塊和聊天模塊是MFCA的客戶程序,MFCA定義了使用ConnectionManager和SharedInfo的接口,從而使它們同應(yīng)用程序的其他部分解耦。
圖3 客戶端框架
如圖4所示,服務(wù)器端使用了兩種設(shè)計模式來進(jìn)行設(shè)計。第一個使用的設(shè)計模式是DAO(數(shù)據(jù)訪問對象)。Web服務(wù)通過DAO去訪問和處理Moodle數(shù)據(jù)庫中的信息。該模式實(shí)現(xiàn)了數(shù)據(jù)訪問和業(yè)務(wù)邏輯的分離,并實(shí)現(xiàn)了業(yè)務(wù)數(shù)據(jù)的對象化封裝。[4]在本系統(tǒng)中,對每種類型的數(shù)據(jù),都有一個DAO接口用來表示可以在該類型上執(zhí)行的操作。應(yīng)用程序的模型層包括以下幾種數(shù)據(jù)類型和相應(yīng)的DAO接口,分別是登錄、論壇、評價、消息、聊天、文件下載、通知、成績、課程的選擇、調(diào)查和統(tǒng)計信息。第二個使用的設(shè)計模式是Factorymethod(工廠方法)設(shè)計模式。采用這種設(shè)計模式,使用一個工廠類來創(chuàng)建DAO類的實(shí)例,而不是Web服務(wù)中創(chuàng)建,從而實(shí)現(xiàn)了面向?qū)ο笤O(shè)計中最重要的原則之一OCP(開閉原則),實(shí)現(xiàn)了系統(tǒng)的可擴(kuò)展性。[5]
圖4 服務(wù)器端框架
服務(wù)器端還使用Web服務(wù)對Moodle提供的功能進(jìn)行了封裝發(fā)布,并根據(jù)客戶端的需求,對Mooddle提供的功能進(jìn)行擴(kuò)充,以滿足需求。
本系統(tǒng)中的Web服務(wù)是基于REST(代表性狀態(tài)傳輸)協(xié)議開發(fā)的,因?yàn)锳ndroid系統(tǒng)沒有對其他協(xié)議的本地支持。本系統(tǒng)除了使用HTTP、REST協(xié)議來進(jìn)行數(shù)據(jù)傳輸之外,還使用了JSON來定義傳輸數(shù)據(jù)的格式。JSON是一種輕量級的數(shù)據(jù)交換格式,因此非常適合在移動應(yīng)用中使用。[6]
本文考慮到移動設(shè)備的迅猛發(fā)展,設(shè)計了一個基于Android平臺的移動學(xué)習(xí)系統(tǒng)。該系統(tǒng)采用SOA架構(gòu),充分利用現(xiàn)有E-Learning系統(tǒng)的資源,具可擴(kuò)展性強(qiáng)、使用靈活等特點(diǎn)。為學(xué)生提供了一條便利的學(xué)習(xí)途徑,并為移動學(xué)習(xí)的實(shí)際運(yùn)用提供了一種解決方案。
[1]余勝泉.移動學(xué)習(xí)——當(dāng)代E-Learning的新領(lǐng)域[J].中國遠(yuǎn)程教育,2003(22):76-78.
[2]李華.面向服務(wù)的教育信息系統(tǒng)體系結(jié)構(gòu)的研究[J].煤炭技術(shù),2010(4):180-182.
[3]馮新?lián)P,范穎,崔凱,沈建京.利用設(shè)計模式改進(jìn)分層架構(gòu)[J].計算機(jī)工程與設(shè)計,2007(15):3686-3689.
[4]朱曦,鐘珞,彭鈺,李少軍,劉玲.基于Java和DAO設(shè)計模式的網(wǎng)上購物系統(tǒng)的實(shí)現(xiàn)[J].信息技術(shù),2005(12):120-122.
[5]蔣海昌.開閉原則在軟件開發(fā)中的應(yīng)用[J].軟件導(dǎo)刊,2012(4):22-24.
[6]龔成瑩,邢敬宏,胡銀保.基于JSON的Android移動終端與PHP及MySQL數(shù)據(jù)通信[J].工業(yè)儀表與自動化裝置,2013(1):63-65.
襄陽職業(yè)技術(shù)學(xué)院學(xué)報2015年2期