張?zhí)煨?/p>
(福建船政交通職業(yè)學(xué)院,福州350007)
數(shù)字化校園管理是以計算機(jī)網(wǎng)絡(luò)和信息數(shù)字化技術(shù)為基礎(chǔ),通過大量的有針對性的應(yīng)用軟件建立起來的一個用于滿足各類校園業(yè)務(wù)管理的大型計算機(jī)網(wǎng)絡(luò)系統(tǒng)。但其服務(wù)應(yīng)用支撐軟件開發(fā)和項目實施過程常碰到以下問題:
首先,業(yè)務(wù)和程序捆綁得較為緊密,大多數(shù)開發(fā)人員仍然適應(yīng)那種將每一個應(yīng)用程序作為一個獨立問題解決的方式。
其次,大量異構(gòu)系統(tǒng)并存,不同計算機(jī)硬件工作方式不同,操作系統(tǒng)不同、編程語言也不同;系統(tǒng)內(nèi)或系統(tǒng)間的接口不統(tǒng)一,系統(tǒng)一旦變大或變多則接口變得異常復(fù)雜,維護(hù)和升級的成本很高。
再次,在早期設(shè)計概念中,只包括構(gòu)件(也稱模塊)以及一些基本的模塊互聯(lián)機(jī)制,隨著軟件開發(fā)實踐,構(gòu)件間的互聯(lián)機(jī)制逐漸獨立出來[1]。傳統(tǒng)的點對點應(yīng)用連接方式將最終造成數(shù)字化校園管理架構(gòu)蛛網(wǎng)化,伴隨而來的是復(fù)雜僵化的應(yīng)用架構(gòu)、高額的維護(hù)成本和緩慢的服務(wù)響應(yīng)速度。
通過深入分析以上問題,作者按照軟件體系架構(gòu)的思想來梳理軟件開發(fā)工作方式,引入合適的集成方式和構(gòu)件設(shè)計規(guī)約,利用服務(wù)組件架構(gòu)(SCA,Service Component Architecture)標(biāo)準(zhǔn)來開發(fā)數(shù)字化校園管理服務(wù)控制系統(tǒng),使其成為面向校園管理各類應(yīng)用服務(wù)架構(gòu) (SOA,Service Oriented Architecture)的信息傳輸龍骨,能夠幫助簡化IT架構(gòu)(減少應(yīng)用整合接口的數(shù)量和復(fù)雜程度),降低運作成本。
面向服務(wù),本質(zhì)就是以服務(wù)協(xié)同為中心,組織好各種服務(wù)間的工作[2]。
從數(shù)字化校園管理應(yīng)用軟件系統(tǒng)項目特點來看,教務(wù)管理、學(xué)籍管理、教學(xué)資源管理、招生熱線管理、數(shù)字化圖書館等外部服務(wù)形式主要體現(xiàn)為Web服務(wù),HTTP Servlet服務(wù),CORBA服務(wù)、Tuxedo服務(wù)、數(shù)據(jù)庫表接口和存儲過程接口等。服務(wù)控制系統(tǒng)需要將這些服務(wù)通過適配器集成到服務(wù)運行構(gòu)件中,并提供統(tǒng)一的服務(wù)接口供外部調(diào)用,通過不斷豐富其應(yīng)用適配功能,不斷開發(fā)新的面向典型應(yīng)用的組建標(biāo)準(zhǔn),使得用戶通過簡單的配置就可以將已有的各種應(yīng)用遺留系統(tǒng)和新開發(fā)的應(yīng)用系統(tǒng)集成到服務(wù)控制系統(tǒng)上來。
該服務(wù)控制系統(tǒng)支持服務(wù)交互功能,提供消息傳遞功能,并以事件基礎(chǔ)架構(gòu)來支持這些功能。還提供合適的服務(wù)級別和可管理性,支持在異構(gòu)環(huán)境中的組合應(yīng)用。依據(jù)SOA原則,需要使用與實現(xiàn)無關(guān)的接口,被調(diào)用的服務(wù)位置對于調(diào)用者應(yīng)該是透明的,需要支持可互操作性的通信協(xié)議,同時可以進(jìn)行相對粗粒度的、支持重用封裝的服務(wù)定義,可以作為分布式的異構(gòu)基礎(chǔ)架構(gòu)進(jìn)行實現(xiàn)。在框架模型中,構(gòu)件根據(jù)承擔(dān)責(zé)任角度分為功能構(gòu)件和連接構(gòu)件,業(yè)務(wù)過程的擴(kuò)展體現(xiàn)在連接構(gòu)件中,同時連接構(gòu)件負(fù)責(zé)功能構(gòu)件之間的交互[3],服務(wù)控制系統(tǒng)就起到了連接構(gòu)件的作用。在系統(tǒng)中被集成的對象明確被定義為服務(wù),而不是傳統(tǒng)EAI中各種各樣的中間件系統(tǒng),明確強(qiáng)調(diào)消息處理在集成過程中的核心作用,而且事件驅(qū)動成為重要特征[4]。
對應(yīng)于SCA的概念,服務(wù)控制系統(tǒng)主要發(fā)揮服務(wù)注冊中心以及服務(wù)通道的作用,按主要功能分為4部分,如圖1。
圖1 服務(wù)控制系統(tǒng)架構(gòu)
1.2.1 服務(wù)配置管理
服務(wù)配置管理主要實現(xiàn)將開發(fā)好的應(yīng)用服務(wù)注冊在系統(tǒng)可引用的配置文件中。服務(wù)配置使用XML來描述服務(wù)的引用位置,這保證了軟件系統(tǒng)在運行過程支持在線演化,即意味著軟件在運行期間隨著配置參數(shù)改變則各個服務(wù)能被方便地增加、刪除[5]。
服務(wù)配置XML文件的最基本結(jié)構(gòu)如圖2所示,包括服務(wù)的聲明、輸入/輸出端定義和服務(wù)這程序的位置。
圖2 服務(wù)配置文件結(jié)構(gòu)
1.2.2 服務(wù)安全管理
數(shù)字化校園管理的應(yīng)用軟件,很多對應(yīng)用的訪問是要進(jìn)行安全控制的。針對這一普遍需求,在系統(tǒng)設(shè)計了服務(wù)安全管理功能。
服務(wù)安全管理主要是實現(xiàn)安全配置,分布在各處的服務(wù)經(jīng)常被遠(yuǎn)程調(diào)用,服務(wù)組件本身必須實現(xiàn)安全設(shè)計來完成服務(wù)調(diào)用者驗證等工作。本系統(tǒng)采用的安全策略是應(yīng)用Spring Security對服務(wù)訪問進(jìn)行控制。
數(shù)字化校園管理許多應(yīng)用服務(wù)需要針對服務(wù)本身的動態(tài)特征提出訪問控制要求,即需要對用戶的各類角色設(shè)置權(quán)限。因此,安全配置設(shè)計采用Spring框架下的Spring Security相關(guān)組件作為安全管理組件,服務(wù)數(shù)據(jù)交換的 Mule系統(tǒng)也使用Spring Security。通過安全管理,可以在HTTP的輸入端(inbound)對用戶進(jìn)行認(rèn)證,配置組件的訪問權(quán)限。
Spring Security是通過Servlet Fileter的方式嵌入整個Web應(yīng)用,可以進(jìn)行用戶認(rèn)證和權(quán)限控制的管理,從而提供一種統(tǒng)一的跨應(yīng)用系統(tǒng)的安全管理。當(dāng)用戶訪問資源的時候,就會被相關(guān)的過濾器所攔截,進(jìn)行用戶認(rèn)證和權(quán)限判斷。
在具體設(shè)計中通過配置安全元素、配置組件訪問權(quán)限以及通過攔截器阻擋非法訪問來實現(xiàn)服務(wù)的安全訪問。同時,結(jié)合最常用的WebService方法,配置了CXF。
1.2.3 服務(wù)監(jiān)控
服務(wù)監(jiān)控用于確定監(jiān)控類型和被監(jiān)控的服務(wù)執(zhí)行過程數(shù)據(jù)內(nèi)容,通過圖形界面完成服務(wù)運行過程的監(jiān)控瀏覽,主要實現(xiàn)實時事件監(jiān)控和歷史事件查詢。
本系統(tǒng)開發(fā)了一個管理控制器實現(xiàn)對服務(wù)構(gòu)件運行過程的監(jiān)控,通過管理控制臺實現(xiàn)對服務(wù)注冊、服務(wù)調(diào)用身份登記、服務(wù)過程的監(jiān)控等,實現(xiàn)服務(wù)注冊、服務(wù)調(diào)用身份的增刪改查,以及上述安全設(shè)計。定制輪巡周期實現(xiàn)主動發(fā)現(xiàn)注冊的服務(wù)構(gòu)件是否可達(dá)。監(jiān)控服務(wù)構(gòu)件運行過程信息,即將存于運行日志庫的監(jiān)控信息通過界面展示,對于異常信息進(jìn)行提示。
在服務(wù)運行過程實現(xiàn)便捷的可視化監(jiān)控,既是了解服務(wù)是否穩(wěn)定運行的需要也是前期調(diào)試服務(wù)的必須。本監(jiān)控設(shè)計包括2部分,即如何將必要的監(jiān)控事件入庫保存和如何顯示這些監(jiān)控信息。前者又主要包括2類監(jiān)控事件;一是服務(wù)系統(tǒng)的運行情況,如服務(wù)是否被成功調(diào)用;二是服務(wù)組件本身執(zhí)行過程的日志。對于監(jiān)控信息的顯示設(shè)計,考慮到實時信息數(shù)量可能會很多,因此設(shè)計了“事件讀取狀態(tài)”(點擊記錄讀取信息內(nèi)容后該記錄被標(biāo)記為讀?。┓奖惚O(jiān)控者從大量信息中關(guān)注新出現(xiàn)記錄。
1.2.4 服務(wù)數(shù)據(jù)交換
服務(wù)數(shù)據(jù)交換主要負(fù)責(zé)服務(wù)數(shù)據(jù)的底層交換,此處引用開源共享技術(shù)來實現(xiàn),完成對不同協(xié)議數(shù)據(jù)格式的轉(zhuǎn)義、過濾等處理。
在服務(wù)控制系統(tǒng)應(yīng)用過程,主要分為服務(wù)準(zhǔn)備、服務(wù)發(fā)布、服務(wù)調(diào)用3個階段:
1)服務(wù)準(zhǔn)備。根據(jù)業(yè)務(wù)應(yīng)用需求和運行環(huán)境完成應(yīng)用服務(wù)的制作,包括服務(wù)邏輯設(shè)計、服務(wù)編寫與編譯、可調(diào)用的接口設(shè)定。
2)服務(wù)發(fā)布。將業(yè)務(wù)應(yīng)用服務(wù)在配置文件中寫明可調(diào)用的位置,有特定要求的(如安全調(diào)用)需要在配置中說明,然后在服務(wù)控制系統(tǒng)中予以發(fā)布。
3)服務(wù)調(diào)用。將業(yè)務(wù)應(yīng)用服務(wù)的可調(diào)用接口情況提供給調(diào)用者,完成調(diào)用界面的設(shè)計,包括正常以及異常信息的顯示;調(diào)用過程中,在服務(wù)控制系統(tǒng)的服務(wù)監(jiān)控模塊可查詢服務(wù)執(zhí)行日志,了解服務(wù)運行情況。
根據(jù)數(shù)字化校園管理信息門戶工作方式的需要,構(gòu)建面向用戶的服務(wù)模式時,需要將應(yīng)用服務(wù)基于Poetlet技術(shù),實現(xiàn)統(tǒng)一信息門戶,有效實現(xiàn)校園各類應(yīng)用服務(wù)異構(gòu)系統(tǒng)的整合。
為適應(yīng)異構(gòu)環(huán)境,本系統(tǒng)選用Java作為開發(fā)語言,將XML作為數(shù)據(jù)格式語言用于服務(wù)配置的定義、數(shù)據(jù)傳遞等。
研發(fā)運行環(huán)境選擇PC服務(wù)器作為硬件系統(tǒng),數(shù)據(jù)庫系統(tǒng)選擇Oracle10g,服務(wù)數(shù)據(jù)交換選用開源系統(tǒng)MULE,目前版本為2.1.1。
本系統(tǒng)采用的MULE作為一個基于Java的輕量級消息框架,可以快速地將服務(wù)應(yīng)用連接起來,并且確保在這些應(yīng)用間交換不同協(xié)議的數(shù)據(jù)。MULE是遵循面向服務(wù)架構(gòu)(SOA)的系統(tǒng),它提供了對現(xiàn)有系統(tǒng)的簡潔集成方式,即可以集成JMS、Web Service、JDBC、HTTP 甚至其他的技術(shù)。MULE的可擴(kuò)展性框架允許開發(fā)者逐步將更多的應(yīng)用連接到它的系統(tǒng),而且Mule透明地管理組件間的所有交互,不管這些組件在底層使用了怎樣的傳輸協(xié)議,都可以利用在多個應(yīng)用間讀取、轉(zhuǎn)換和發(fā)送數(shù)據(jù)的消息框架來解決這一問題。
根據(jù)SCA的模型框架,本文將服務(wù)定義為由服務(wù)組件、服務(wù)輸入端和服務(wù)輸出端3部分組成,如圖3。
圖3 服務(wù)定義
形成的服務(wù)配置信息示例:
基于Java的實現(xiàn)所提供的服務(wù),可以有一個按下列方法之一定義的接口:1)Java接口;2)Java類。
產(chǎn)生自Web Services Description Language(WSDL)portType的Java接口,Java實現(xiàn)類必須實現(xiàn)服務(wù)接口定義的所有操作,如果服務(wù)接口是用一個Java接口定義的,那么基于Java的構(gòu)件要么實現(xiàn)此Java接口,要么實現(xiàn)接口的所有操作。
由Java類定義接口的服務(wù)(與Java接口相對)不是遠(yuǎn)程的。產(chǎn)生自WSDL portType的Java接口是遠(yuǎn)程的,于此實現(xiàn)的組件類型的XML描述如下:
端點的傳輸類型有 WebService(CXF)、File、HTTP、HTTPS、TCP、FTP等多種形式。不同方式傳輸時,作為輸入/輸出端的屬性設(shè)置不同。其中常用的 WebService(CXF)是一個高性能的 Web-Service,同時還支持多種綁定,CXF比較適合創(chuàng)建各種不同傳輸協(xié)議的服務(wù)。
下面以一個“Hello響應(yīng)”作為簡單示例對以上的服務(wù)配置和應(yīng)用進(jìn)行說明。
1)服務(wù)端。代碼包括3個部分:
服務(wù)接口,一個Java的Interface(HelloSvc.java);
服務(wù)實現(xiàn),HelloService接口的實現(xiàn)類(HelloSvcImpl.java);
SCA的服務(wù)組件配置文件,HelloSvc.composite,主體如下:
2)客戶端。對于客戶端的調(diào)用代碼,客戶端需要知道服務(wù)端組件提供了什么服務(wù),實現(xiàn)了什么Java接口,而不需要接口后面的實現(xiàn)細(xì)節(jié)。
服務(wù)控制系統(tǒng)只是一個基礎(chǔ),需要通過應(yīng)用場景進(jìn)行驗證。為了驗證以上服務(wù)控制系統(tǒng)的可用性,設(shè)計一個簡單的“用戶信息管理(Custmos-Manage)”應(yīng)用服務(wù)作為測試用例。采用的“用戶信息管理”系統(tǒng),是在數(shù)字化校園管理應(yīng)用軟件中具有典型信息服務(wù)操作的小型管理系統(tǒng),其應(yīng)用模塊都采用目前在業(yè)務(wù)開發(fā)中較常見的網(wǎng)頁方式。該系統(tǒng)需要達(dá)成如下驗證目標(biāo):
1)服務(wù)配置信息須成功被讀取,被調(diào)用服務(wù)須被成功執(zhí)行;
2)服務(wù)運行過程監(jiān)控信息須成功被保存、讀?。?/p>
3)服務(wù)安全配置須成功被執(zhí)行。
“用戶信息管理”(CustmosManage)主要采用B/S模式開發(fā),并調(diào)用后端的服務(wù)。在B/S的服務(wù)端采用JSP的方式提供界面訪問以及調(diào)用后臺的應(yīng)用服務(wù),Web應(yīng)用服務(wù)器采用Apache Tomcat。應(yīng)用服務(wù)配置在服務(wù)控制系統(tǒng)內(nèi),以 Web Service的方式提供,采用Java開發(fā),數(shù)據(jù)庫使用Oracle10g。用例系統(tǒng)架構(gòu)如圖4。
用于服務(wù)調(diào)用的安全設(shè)計,在 Web服務(wù)器層面,采用Spring Security的安全管理模式,進(jìn)行Web應(yīng)用的登錄認(rèn)證。登錄認(rèn)證成功,才能進(jìn)行后繼的操作和服務(wù)調(diào)用。對于WebService應(yīng)用,則采用WS-Security的安全認(rèn)證。
經(jīng)測試驗證,通過Web頁面完成用戶登錄和各項服務(wù)調(diào)用,測試服務(wù)全部通過,在服務(wù)監(jiān)控界面可查到的日志信息如圖5。
圖4 用例架構(gòu)
圖5 客戶信息服務(wù)組件執(zhí)行日志顯示
通過事件查看器查看到的監(jiān)控信息如圖6。
圖6 客戶信息服務(wù)調(diào)用監(jiān)控日志顯示
數(shù)字化校園管理應(yīng)用服務(wù),由于功能需求與組織結(jié)構(gòu)的不同,硬件環(huán)境與軟件設(shè)計都存在很大的個性化與差異性,本系統(tǒng)以應(yīng)用為核心,以數(shù)據(jù)為基礎(chǔ),以信息服務(wù)為表現(xiàn),按照“服務(wù)型”主線,將各類應(yīng)用服務(wù)基于SCA架構(gòu),通過適配器把這些服務(wù)集成到服務(wù)運行構(gòu)件中,并提供統(tǒng)一的服務(wù)接口供外部調(diào)用。
在實際運行中,數(shù)字化校園管理產(chǎn)生的其他應(yīng)用服務(wù)都可以參考“用戶信息管理”系統(tǒng)用例架構(gòu)模式,利用本系統(tǒng)來實現(xiàn)信息門戶統(tǒng)一配置服務(wù)的服務(wù)控制管理,有效解決系統(tǒng)集成、信息整合和個性化信息服務(wù)等問題。經(jīng)過實驗證明,本文研究的服務(wù)控制系統(tǒng)是有效可行的。
[1]梅宏,申峻嶸.軟件體系結(jié)構(gòu)研究進(jìn)展[J].軟件學(xué)報,2006,17(6):1257-1275.
[2]馬曉星,余萍,陶先平,等.一種面向服務(wù)的動態(tài)協(xié)同架構(gòu)及其支撐系統(tǒng) [J].計算機(jī) 學(xué)報,2005,28(4):467-477.
[3]麻志毅,陳泓婕.一種面向服務(wù)的體系結(jié)構(gòu)參考模型[J].計算機(jī)學(xué)報,2006,29(7):1011-1019.
[4]張廣勝,蔣昌俊,湯憲飛,等.面向服務(wù)的企業(yè)應(yīng)用集成系統(tǒng)描述與驗證[J].軟件學(xué)報,2007,18(12):3015-3030.
[5]王曉鵬,王千祥,梅宏.一種面向構(gòu)件化軟件的在線演化方法[J].計算機(jī)學(xué)報,2005,28(11):1890-1897.