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