吳亞明 陳躍娟
(1.綏化學(xué)院信息工程學(xué)院;2.綏化學(xué)院外國語學(xué)院 黑龍江綏化 152061)
2018年4月,教育部正式發(fā)布《教育信息化2.0行動(dòng)計(jì)劃》。[1]該計(jì)劃的提出符合新時(shí)代發(fā)展的特點(diǎn),順應(yīng)了現(xiàn)代信息技術(shù)推動(dòng)教育變革的大潮流,推動(dòng)了教學(xué)理念、教學(xué)模式的更新,也對(duì)教師的專業(yè)發(fā)展提出了更高的要求。教師專業(yè)發(fā)展平臺(tái)設(shè)計(jì)的主要目的是通過網(wǎng)絡(luò)形式,為教師專業(yè)發(fā)展提供一個(gè)學(xué)習(xí)和交流的互動(dòng)平臺(tái)。依托信息技術(shù)的優(yōu)勢,實(shí)現(xiàn)教師的專業(yè)發(fā)展對(duì)教育水平和教學(xué)能效的提升有著極其重要的作用。
(一)各學(xué)校教師能登錄平臺(tái),在線學(xué)習(xí),上傳下載資料,發(fā)布教學(xué)及學(xué)術(shù)文章,交流討論。
(二)各學(xué)校教師能查看學(xué)習(xí)進(jìn)度,完成在線考核,查看個(gè)人成績。
(三)平臺(tái)可以發(fā)布公告、消息、通知,銜接教育部平臺(tái)入口,及時(shí)發(fā)布權(quán)威性的官方或業(yè)界政策、新聞。
(四)平臺(tái)支持教師個(gè)人或團(tuán)體組織進(jìn)行權(quán)限認(rèn)證,可以為相關(guān)資料文件訪問設(shè)置私密或公開。
(五)平臺(tái)支持同名微信公眾號(hào),可以推送消息到個(gè)人微信。
(六)平臺(tái)支持舉辦學(xué)術(shù)會(huì)議,各學(xué)校教師可以在線報(bào)名與申請(qǐng)。
(七)平臺(tái)可以對(duì)相關(guān)學(xué)術(shù)會(huì)議、學(xué)校及教師的各項(xiàng)成果進(jìn)行統(tǒng)計(jì),圖形化歷年走向趨勢。
(一)系統(tǒng)軟件模式設(shè)計(jì)。系統(tǒng)在軟件設(shè)計(jì)上采用的是基于B∕S模式的三層結(jié)構(gòu),這三層分別是數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層。數(shù)據(jù)層中不包含任何的代碼,只有數(shù)據(jù)庫和數(shù)據(jù)存儲(chǔ)的過程;業(yè)務(wù)邏輯層主要存放數(shù)據(jù)訪問及其邏輯代碼;表示層則實(shí)現(xiàn)業(yè)務(wù)邏輯層的方法調(diào)用。因?yàn)楸硎緦又荒芎蜆I(yè)務(wù)邏輯層交互,不能直接對(duì)數(shù)據(jù)訪問層的數(shù)據(jù)庫訪問,因此這樣的三層設(shè)計(jì)模式提高了數(shù)據(jù)的安全性。三層體系結(jié)構(gòu)也提高了系統(tǒng)的開發(fā)速度,在該模式下不同的開發(fā)人員只要遵循接口的統(tǒng)一標(biāo)準(zhǔn),利用相同對(duì)象模型的實(shí)體類,可實(shí)現(xiàn)系統(tǒng)分散開發(fā)。另外,該模式還有利于系統(tǒng)移植,如果需要把C∕S模式的系統(tǒng)轉(zhuǎn)換為B∕S模式系統(tǒng),只要修改三層架構(gòu)的表示層便可實(shí)現(xiàn),而不必修改數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層便可以把系統(tǒng)快速移植到網(wǎng)絡(luò)上。同時(shí),軟件在設(shè)計(jì)時(shí)采用了面向?qū)ο蟮脑O(shè)計(jì)方法,能夠更好地實(shí)現(xiàn)軟件的模塊化,達(dá)到規(guī)范軟件設(shè)計(jì)過程的目的,增強(qiáng)了系統(tǒng)的可維護(hù)性和可擴(kuò)展性。
(二)系統(tǒng)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)。因?yàn)樵撈脚_(tái)并不是針對(duì)某一個(gè)學(xué)校專門定制的,只要是把該平臺(tái)發(fā)布到外網(wǎng)上,各用戶即可通過域名解析系統(tǒng)找到IP地址進(jìn)行訪問。鑒于這種情況,為了系統(tǒng)的網(wǎng)絡(luò)安全性考慮,用戶訪問必須經(jīng)過防火墻過濾,平臺(tái)可以針對(duì)用戶的安全級(jí)別,隨時(shí)修改防火墻設(shè)置。
(三)數(shù)據(jù)庫的連接原理。平臺(tái)在開發(fā)時(shí)選取MySQL數(shù)據(jù)庫,MySQL是一個(gè)小型的關(guān)系型數(shù)據(jù)庫系統(tǒng),它具有體積小、速度快、成本低等特點(diǎn),它最大的優(yōu)點(diǎn)是能通過主從復(fù)制實(shí)現(xiàn)數(shù)據(jù)的同步,通過讀寫分離實(shí)現(xiàn)數(shù)據(jù)的并發(fā)。具體流程是master先在每個(gè)事務(wù)更新數(shù)據(jù)完成之前,將該操作記錄串行地寫入到binlog文件中。然后,salve開啟一個(gè)I∕O Thread,該線程在master打開一個(gè)普通連接,主要工作是binlog dump process。如果讀取的進(jìn)度已經(jīng)和master同步,就進(jìn)入睡眠狀態(tài)等待master產(chǎn)生下一個(gè)事件,來完成利用I∕O線程寫中繼日志的目的。[2]最后,SQL Thread會(huì)讀取中繼日志,并順序執(zhí)行該日志中的SQL事件,從而與主數(shù)據(jù)庫中的數(shù)據(jù)保持一致。在本系統(tǒng)中前臺(tái)是使用PDO連接數(shù)據(jù)庫,創(chuàng)建PDO基類的實(shí)例,類名使用PDO,在構(gòu)造函數(shù)中給出連接的數(shù)據(jù)庫源,如果存在用戶名和密碼,在構(gòu)造類中也一并給出,無論連接有什么異常,都會(huì)給出一個(gè)PDOException異常對(duì)象,通過異常的捕獲或set_exception_handler()來處理連接錯(cuò)誤。
(四)服務(wù)器的原理及配置。本系統(tǒng)采用Nginx作為WEB服務(wù)器,Nginx不僅可以作為一個(gè)HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,也可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn),不同的服務(wù)單元可以在負(fù)載均衡的作用下將流量負(fù)載分?jǐn)?,這樣就保證了服務(wù)器的響應(yīng)速度,最終給用戶良好的體驗(yàn)。同時(shí),Nginx還具有IMAP、POP3、SMTP代理服務(wù)器的身份。Nginx上不能直接對(duì)PHP頁面處理,它僅僅是個(gè)WEB服務(wù)器,所以想要發(fā)布PHP項(xiàng)目需要在服務(wù)器上安裝PHP解釋器,然后找到Nginx服務(wù)器的配置文件,指定PHP的部署位置,正常的情況下不需要重新啟動(dòng)Nginx和PHP解釋器就可以訪問PHP主頁。
(五)緩存設(shè)計(jì)。對(duì)于一個(gè)訪問量較大的網(wǎng)站,在開發(fā)時(shí),必須考慮系統(tǒng)緩存的設(shè)計(jì)。本平臺(tái)在開發(fā)時(shí)采用redis緩存、隊(duì)列、異步通信等方法,來解決頁面訪問和點(diǎn)擊量迅速上升時(shí)所造成的頁面緩慢,出現(xiàn)502錯(cuò)誤、504錯(cuò)誤或者頁面空白等現(xiàn)象。同時(shí),配合了RabbitMQ(消息中間件)進(jìn)行消息擴(kuò)散與延遲發(fā)送,能有效地通知各個(gè)學(xué)校教師相關(guān)信息。相關(guān)頁面和圖片還做了一些靜態(tài)處理,用以減輕主服務(wù)器壓力,避免js與css加載緩慢而產(chǎn)生的對(duì)用戶的影響。
(一)單點(diǎn)登錄。在教師專業(yè)發(fā)展平臺(tái)的開發(fā)中,使用了單點(diǎn)登錄的技術(shù)。單點(diǎn)登錄英文全稱Single Sign On,簡稱SSO。它的功能就是在多個(gè)應(yīng)用系統(tǒng)共同存在的情況下,用戶只需在一個(gè)系統(tǒng)中登錄,被它信任的應(yīng)用系統(tǒng)就可以任意訪問不需單獨(dú)登錄。[3]因?yàn)榻處煂I(yè)發(fā)展平臺(tái)可以被多個(gè)地區(qū)、多所學(xué)校共同使用,使用平臺(tái)的教師會(huì)越來越多,所以平臺(tái)中的發(fā)布系統(tǒng)、查詢系統(tǒng)、報(bào)名系統(tǒng)、數(shù)據(jù)統(tǒng)計(jì)分析、微信公眾號(hào)等每個(gè)功能模塊都可單獨(dú)成立服務(wù)。如果全部功能模塊放在一個(gè)網(wǎng)站里作為整體功能,使用的數(shù)據(jù)便都在同一數(shù)據(jù)庫。假如其中某個(gè)業(yè)務(wù)掛掉,一定會(huì)影響其他功能,造成整個(gè)系統(tǒng)的全局癱瘓。因此,將所有功能模塊升級(jí)為單獨(dú)的服務(wù),互不影響。即使查詢服務(wù)癱瘓也不會(huì)影響報(bào)名服務(wù),發(fā)布服務(wù)出現(xiàn)癱瘓也不會(huì)影響資料上傳服務(wù)。這樣的設(shè)置大大提升了平臺(tái)的安全性與穩(wěn)定性。如果網(wǎng)站中用戶每次使用一項(xiàng)功能都需要用戶認(rèn)證,這不僅影響用戶的良好體驗(yàn),而且各個(gè)子系統(tǒng)重復(fù)被認(rèn)證授權(quán)的邏輯也是不可行的。單點(diǎn)登錄技術(shù)的使用可以完美地解決重復(fù)認(rèn)證的問題。
(二)消息推送。當(dāng)有新的活動(dòng)、政策、新聞消息,通過微信公眾號(hào)或者手機(jī)端app通知到用戶是比較方便且有效的方式。相關(guān)學(xué)術(shù)會(huì)議、學(xué)校及教師成果的各項(xiàng)統(tǒng)計(jì)報(bào)告及圖形化歷年走向趨勢等都可以在微信公眾號(hào)里隨時(shí)發(fā)布。該平臺(tái)消息推送的原理是把微信配置的內(nèi)容放到config.php中,并且把微信公眾號(hào)接口所需的access_token存儲(chǔ),以post方式請(qǐng)求URL并發(fā)送模板消息。
另外一個(gè)接收消息的方式是手機(jī)短信。例如報(bào)名成功后,幾分鐘后,手機(jī)會(huì)收到報(bào)名成功通知以及后續(xù)考試日期安排等。此種方式的工作原理是后端使用rabbitmq將各種業(yè)務(wù)的消息放進(jìn)隊(duì)列里,由其自動(dòng)發(fā)放。
(三)權(quán)限體系。在教師專業(yè)發(fā)展平臺(tái)上,一個(gè)用戶可以有多個(gè)角色,可以是平臺(tái)上資源的訪問者、可以是資源的共享者、可以是學(xué)術(shù)會(huì)議的舉辦、可以參加其他用戶舉辦的學(xué)術(shù)交流,也可以報(bào)名參見某種培訓(xùn)。也就是說,一個(gè)用戶可以擁有若干角色,不同的角色又有不同權(quán)限,即角色和權(quán)限之間通常是多對(duì)多的關(guān)系。在平臺(tái)開發(fā)時(shí)考慮到以上情況,所以采用RBAC(基于角色的權(quán)限控制)的用戶角色權(quán)限設(shè)計(jì)方案,模型的核心是角色加入到了用戶和權(quán)限之間。[4]取消了用戶和權(quán)限的直接關(guān)聯(lián),改為通過用戶關(guān)聯(lián)角色、角色關(guān)聯(lián)權(quán)限的方法來間接地賦予用戶權(quán)限。
隨著教師專業(yè)發(fā)展平臺(tái)用戶的逐漸增多,如果給系統(tǒng)用戶逐個(gè)授權(quán)(授角色),無疑會(huì)增加系統(tǒng)的負(fù)擔(dān)。在RBAC設(shè)計(jì)方案中,不僅可以給用戶授權(quán),而且還可以給用戶分組并給用戶組授權(quán)。這樣用戶個(gè)人便擁有了個(gè)人權(quán)限和用戶組權(quán)限之和。在應(yīng)用系統(tǒng)中,權(quán)限可理解成對(duì)功能模塊的增刪改查操作,對(duì)某個(gè)菜單的訪問,對(duì)網(wǎng)站頁面上某個(gè)按鈕、圖片的操作。同時(shí),權(quán)限可以分類,功能操作分一類,菜單、文件、按鈕的操作分為另一類。這樣在對(duì)數(shù)據(jù)表建模時(shí),用不同的權(quán)限值表示不同的權(quán)限類型,建立一個(gè)“用戶——角色——權(quán)限——資源”的模型,在這個(gè)模型的作用下,對(duì)系統(tǒng)的權(quán)限擴(kuò)展或變更就變得非常方便,只需建立一個(gè)新的關(guān)聯(lián)表即可。
(四)查詢系統(tǒng)。教師利用平臺(tái)學(xué)習(xí)時(shí),會(huì)頻繁使用資料庫。使用資料庫的主要操作就是進(jìn)行資源的查詢,查詢功能會(huì)重點(diǎn)使用搜索,在模糊搜索中對(duì)關(guān)鍵詞的劃分就尤為重要。在本平臺(tái)開發(fā)中引用了OpenSearch(開放搜索)技術(shù),它是阿里云開放搜索的簡稱,提供了搜索托管服務(wù),針對(duì)用戶的結(jié)構(gòu)化數(shù)據(jù)搜索需求,實(shí)現(xiàn)搜索排序,完成數(shù)據(jù)自由定制。另外,主流阿里云存儲(chǔ)產(chǎn)品還能實(shí)現(xiàn)數(shù)據(jù)自動(dòng)對(duì)接、自動(dòng)同步更新,開發(fā)者只需要在控制臺(tái)中授權(quán),數(shù)據(jù)就可以自動(dòng)同步至OpenSearch中,后續(xù)數(shù)據(jù)的更新也可以自動(dòng)實(shí)時(shí)同步。一張OpenSearch表可同時(shí)為多個(gè)rds(關(guān)系型數(shù)據(jù)庫服務(wù))及TDDL(分布式數(shù)據(jù)訪問引擎)提供支持,而且還提供很多字段處理插件,能很好地滿足平臺(tái)使用者的搜索需求,解決平臺(tái)開發(fā)的查詢技術(shù)瓶頸。
(五)在線討論。在該平臺(tái)中還有一個(gè)重要的功能就是在線討論,它為教師之間進(jìn)行交流提供了一個(gè)特殊的空間,這也是網(wǎng)絡(luò)的重要特性之一。雖然現(xiàn)在很多人都使用微信群互相聯(lián)系,但是一些涉及到論文的知識(shí)產(chǎn)權(quán)或者版權(quán)一類的內(nèi)容不方便在微信里或者向外界發(fā)送。平臺(tái)可以支持一個(gè)在線的聊天室,雖然使用go語言或者nodejs比PHP更加適合,但是學(xué)習(xí)平臺(tái)畢竟不會(huì)向直播平臺(tái)那樣高訪問、大并發(fā),所以使用PHP支持此功能足以。在聊天室中,教師可以隨時(shí)在線即時(shí)問答,比留言更具互動(dòng)性。如果討論話題需要一些外界資料,可以通過教師自己的博客鏈接或者網(wǎng)站內(nèi)的其他外部鏈接實(shí)現(xiàn)與外界交流。在平臺(tái)內(nèi)部,訪問一些公開的課件或?qū)W習(xí)視頻等資料可以使用鏈接的形式轉(zhuǎn)發(fā),比文件本身的轉(zhuǎn)發(fā)安全系數(shù)更高。
(六)狀態(tài)設(shè)置。在平臺(tái)的聊天功能界面中,為區(qū)分在線教師和離線教師,設(shè)置了“在線”和“離線”兩種狀態(tài),在線教師可以實(shí)時(shí)交流,而離線教師不支持交流功能,狀態(tài)的設(shè)置是通過bootstrap(一種前端框架)實(shí)現(xiàn)的,bootstrap已經(jīng)有很多款成熟的框架界面支持在線聊天功能界面,前端用jquery和ajax向服務(wù)器端提交數(shù)據(jù)即可。因?yàn)榭紤]這個(gè)功能不會(huì)有大量數(shù)據(jù),也不需要持久對(duì)話,聊天記錄可以臨時(shí)存放在redis或者db里,每隔一段時(shí)間清理。
以上就是平臺(tái)搭建的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)方案,它不僅是一個(gè)具備資源的學(xué)習(xí)平臺(tái),更是推動(dòng)教育改革的有力助手。教師是教學(xué)活動(dòng)的主導(dǎo),只有提升教師的專業(yè)水平,教學(xué)質(zhì)量的提升才能成為一種可能。教師專業(yè)發(fā)展平臺(tái)的設(shè)計(jì)和使用可以有效實(shí)現(xiàn)技術(shù)、資源和教師的無縫對(duì)接,隨時(shí)隨地為教師提供自我成長的機(jī)會(huì),為專家、學(xué)校、教育主管部門和教師的溝通搭建橋梁。教師專業(yè)發(fā)展平臺(tái)所具有的開放性、廣泛性和平等性等特點(diǎn),能夠突破時(shí)間和地域的限制,成為教師在線學(xué)習(xí)、知識(shí)管理、資源共享、同伴交流和自我反思的有效途徑[5]。