郭君芳 季 雋 李中平
【摘要】數(shù)字開放實驗室的管理、決策、發(fā)展依賴于信息技術(shù)。但建立同構(gòu)信息系統(tǒng)的成本和風(fēng)險都過高,因此如何以Web2.0理念為導(dǎo)向,建立異構(gòu)信息平臺具有重大現(xiàn)實意義。針對該需求,文章提出了基于SOA架構(gòu)和WCF消息技術(shù)的整合方案。該系統(tǒng)已經(jīng)在上海師范大學(xué)廣泛應(yīng)用。
【關(guān)鍵詞】Web2.0;整合;WCF;SOA;開放實驗室
【中圖分類號】G40-057 【文獻標識碼】A 【論文編號】1009—8097(2009)08—0105—04
引言
上海師范大學(xué)數(shù)字傳媒中心為改善硬件基礎(chǔ)設(shè)施,花費大量資金購買了一些先進設(shè)備及網(wǎng)絡(luò)平臺。為實驗室注入了高標準的硬件資源,也形成了比較完整的萬欣機房管理平臺和實驗室設(shè)備管理平臺。目的是提高學(xué)生的實踐能力,及提高科研和教學(xué)水平。但是通過對上海師范大學(xué)數(shù)理信息學(xué)院全體師生的問卷調(diào)查,發(fā)現(xiàn)目前實驗室管理的信息化程度不高、資源利用率偏低,實驗室信息化管理有待于進一步提高。Web2.0理念下為更好地提高實驗室資源時間化、學(xué)習(xí)者的學(xué)習(xí)效率及實驗課的參與度,院領(lǐng)導(dǎo)決定通過信息化手段實現(xiàn)對實驗室的網(wǎng)絡(luò)化管理。
通過實地考察、訪談、文獻分析等方式,調(diào)查分析了大部分高校的數(shù)字開放實驗室。結(jié)果發(fā)現(xiàn)多數(shù)采取“以新?lián)Q舊”的策略開發(fā)在線實驗室管理系統(tǒng),拋棄了原來已經(jīng)存在的實驗室管理平臺,以致新平臺開發(fā)周期長,風(fēng)險大,花費較高等缺陷,造成了大量人力、物力、財力等資源的浪費。通過項目組有關(guān)人員的研討分析,決定采取“整合”的思想構(gòu)建數(shù)字開放實驗室系統(tǒng),以優(yōu)化資源、節(jié)約成本為原則,整合原來已經(jīng)存在的萬欣機房管理平臺和實驗室設(shè)備管理平臺。本系統(tǒng)基于OOP(面向?qū)ο蟮木幊趟枷?進行相互獨立模塊的設(shè)計開發(fā),采用ASP.net三層架構(gòu)技術(shù)和SqlServer2005數(shù)據(jù)庫進行開發(fā)新平臺,利用SOA技術(shù)實現(xiàn)服務(wù)和技術(shù)的分離,其中利用WCF技術(shù)開發(fā)Web Service標準接口,整合萬欣機房管理平臺和實驗室設(shè)備管理平臺,從而實現(xiàn)跨平臺軟件服務(wù)的整合。整合后的數(shù)字開放實驗室功能更為強大,不僅能夠在線管理獨立平臺,且融入了體現(xiàn)Web2.0思想的典型技術(shù):RSS,IM(即時聊天)等,從而架構(gòu)了Web2.0理念下的數(shù)字開放實驗室。
一 數(shù)字開放實驗室系統(tǒng)前期分析
為使已有實驗室平臺相互聯(lián)系,實現(xiàn)實驗室資源時間化,提出在Web2.0思想下整合數(shù)字開放實驗室。從Web1.0到Web2.0發(fā)展來看,互聯(lián)網(wǎng)經(jīng)歷了一次理念的洗禮與技術(shù)的升級。Web2.0的核心思想就是用戶之間的彼此交互,倡導(dǎo)開放、參與、共享的理念。從Web1.0時代的自上而下少數(shù)資源控制者集中控制的層級結(jié)構(gòu),發(fā)展到自下而上由普通用戶集體智慧和力量占主導(dǎo)的對等式網(wǎng)絡(luò)結(jié)構(gòu)。Web1.0與Web2.0的區(qū)別[1],如表1所示。
表1 Web1.0與Web2.0的區(qū)別
Web 1.0 Web 2.0
個人網(wǎng)站 博客(blogging)
內(nèi)容管理系統(tǒng) 維基(WIKI)
大英百科全書在線(BritannicaOuli) 維基百科全書(WikiPedia)
…… ……
開發(fā)數(shù)字開放實驗室秉承了Web2.0的基本思想—對等式整合。首先要清楚哪些平臺需要整合,便于項目組成員清晰整合工作,從而使工作順利進行。例如:上海師范大學(xué)數(shù)字開放實驗室整合圖,如圖1所示。
其次,在做用戶需求之前,要分析已經(jīng)存在平臺的基本架構(gòu)、數(shù)據(jù)庫和功能,以便后期開發(fā)整合系統(tǒng)時的數(shù)據(jù)兼容性。從系統(tǒng)對象及應(yīng)用范圍的角度出發(fā),對已有平臺的數(shù)據(jù)庫進行分析時,一定要推導(dǎo)出數(shù)據(jù)庫中重要的表,表中的字段、主鍵和表與表之間的關(guān)系,為定義數(shù)據(jù)接口和方便數(shù)據(jù)讀寫做好鋪墊。在前期準備工作完畢后,最重要的一步就是使用UML建模工具做用戶需求分析。充分考慮實驗室2.0必須滿足學(xué)習(xí)者哪些方面的需求,體現(xiàn)實驗室的哪些資源及用到的具體技術(shù)等問題。從簡到繁,逐步細化本系統(tǒng)各個模塊不同角色的功能。其優(yōu)點是方便項目組成員進行交流和修改文檔,同時也便于科學(xué)合理地進行工作安排與任務(wù)分配。
二 數(shù)字開放實驗室系統(tǒng)技術(shù)需求
從系統(tǒng)的可擴展性、可維護性、可演化性、安全性及可伸縮性等綜合因素進行考慮,確定數(shù)字開放實驗室系統(tǒng)的整體架構(gòu)。
首先根據(jù)目前實驗室信息化的現(xiàn)狀,如果無在線數(shù)字實驗室,采取VisualStudio2008和SqlServer2005設(shè)計開發(fā)一個在線數(shù)字開放實驗室。其次從宏觀的整合角度對數(shù)字開放實驗室系統(tǒng)進行整體設(shè)計與開發(fā),采用SOA(Service Oriented Architecture,面向服務(wù)的架構(gòu))和WCF(Windows Communication Foundation,Windows通信基礎(chǔ))技術(shù),對在線數(shù)字開放實驗室和其他實驗室管理平臺進行整合,從而實現(xiàn)跨平臺的數(shù)據(jù)傳輸。最后,從細節(jié)角度考慮數(shù)字開放實驗室系統(tǒng)實現(xiàn)的具體環(huán)節(jié)。針對數(shù)字開放實驗室系統(tǒng)各個獨立模塊的特點,為便于以后對該系統(tǒng)進行更好地優(yōu)化維護,在整合時可以圍繞use-case圖及其描述和分析階段的不同,加入選定的具體技術(shù),同時使用面向?qū)ο罄碚摷霸O(shè)計模式等,對系統(tǒng)整合的流程框架進行設(shè)計。在應(yīng)用WCF進行平臺整合時的應(yīng)用步驟及注意事項將是一個重點內(nèi)容,將成為平臺相整合的關(guān)鍵因素。
1 SOA架構(gòu)
SOA(Service Oriented Architecture),即以服務(wù)為導(dǎo)向的軟件開發(fā)思想。META[2]將SOA定義為:“一種以通用為目的、可擴展、具有聯(lián)合協(xié)作性的架構(gòu),所有流程都被定義為服務(wù),服務(wù)通過基于類封裝的服務(wù)接口委托給服務(wù)提供者,服務(wù)接口根據(jù)可擴展標識符、格式和協(xié)議單獨描述?!痹摱x表明服務(wù)接口和實現(xiàn)技術(shù)之間的分離。其實它是一個整合各種服務(wù)的架構(gòu)平臺,本質(zhì)是要通過一個核心服務(wù)技術(shù)集中管理平臺,連接各種服務(wù)。SOA架構(gòu)模式中用戶不需要知道服務(wù)是由哪個平臺提供的,即可完成所需要的請求。其中Web Services是SOA的核心技術(shù),提供標準化服務(wù)接口。SOA架構(gòu)有利于平臺整合時建立標準化的服務(wù)接口、支持各種消息模式及服務(wù)契約的精確定義等,故在平臺整合時采取SOA架構(gòu)數(shù)字開放實驗室系統(tǒng)。
2 WCF介紹
WCF[3](Windows Communication Foundation,Windows通信基礎(chǔ))是微軟為新一代分布式應(yīng)用提供的解決方案,是構(gòu)建安全可靠的事務(wù)性服務(wù)的統(tǒng)一框架,是一種構(gòu)建分布式面向服務(wù)系統(tǒng)豐富的技術(shù)基礎(chǔ)。采用WCF技術(shù)的特色就是保證了信息傳遞的安全性和可靠性。WCF的三個基本要素為:Contract(契約或者接口)、Address(地址)、Binding(綁定)。WCF的Endpoint(暴露端口)中契約(Contract)即“What”,就是定義具體實現(xiàn)契約的網(wǎng)絡(luò)服務(wù)內(nèi)容;Address(地址)即“Where”,就是選擇合適的地址來激活服務(wù)器;Binding(綁定)即“How”,就是設(shè)置信息傳遞的協(xié)議。通過WCF端口,信息就可以安全可靠地從Client(客戶端)傳遞到(Service)服務(wù)器端。如圖2所示。
利用WCF技術(shù)開發(fā)Web Services服務(wù)契約(接口),統(tǒng)一消息風(fēng)格,使消息以文本的形式和基于開放標準的通信實現(xiàn)平臺最優(yōu)化[4]。根據(jù)WCF消息傳遞機制及基本原理,設(shè)計萬欣機房管理平臺與數(shù)字開放實驗室系統(tǒng)整合時的WCF整體結(jié)構(gòu)體系,如圖3所示。
然后通過WCF的Binding把萬欣服務(wù)器與實驗室管理系統(tǒng)(LMS)的客戶端聯(lián)系起來,設(shè)置服務(wù)器與客戶端的傳遞協(xié)議。萬欣服務(wù)端通過服務(wù)契約(接口)向數(shù)字實驗室管理系統(tǒng)(LMS)客戶端提供服務(wù),實現(xiàn)了消息安全、可靠、高效地傳遞。
三 上海師范大學(xué)數(shù)字開放實驗室系統(tǒng)整合案例
針對目前實驗室管理現(xiàn)狀及用戶需求分析,項目組決定開發(fā)Web2.0理念下數(shù)字開放實驗室,并整合萬欣機房管理平臺和實驗室管理平臺,從而構(gòu)成數(shù)字開放實驗室系統(tǒng)。下面就以萬欣機房管理平臺與數(shù)字開放實驗室整合為例具體說明整合流程。
1 萬欣機房管理平臺分析
萬欣機房管理平臺是幫助機房管理人員有效管理機房資源,實現(xiàn)學(xué)校機房管理信息化的軟件系統(tǒng)。它可以實現(xiàn)教學(xué)上機時自動禁止學(xué)生上網(wǎng)、玩游戲、網(wǎng)上聊天等活動,顯示實驗課時安排、班級詳細信息、學(xué)生出勤情況、作業(yè)情況等,提高師生的工作和學(xué)習(xí)效率。但是此平臺只能在實驗室中使用,容易造成上機課資料信息的空間間斷性。
目前為保證待開發(fā)數(shù)字開放實驗室系統(tǒng)的數(shù)據(jù)庫與萬欣機房管理平臺的數(shù)據(jù)庫相兼容,使數(shù)據(jù)順利傳輸。首要任務(wù)就是分析萬欣機房管理平臺的數(shù)據(jù)庫(SQL Server2005數(shù)據(jù)庫)。在萬欣機房管理平臺數(shù)據(jù)庫中,數(shù)據(jù)表約有70個。但是通過對表與表之間的關(guān)系推導(dǎo),分析出與整合相關(guān)的數(shù)據(jù)表主要有:用戶信息資料表(tblUser)、邏輯班組用戶信息表(tbLogicClass)、班級資料或部門資表(tblDepartment)、課程班表(the class)、已結(jié)束預(yù)約信息表(tblClassUsed)、課程資料表(tblCourse)、預(yù)約表(tblPreContract)、學(xué)生考勤記錄表(tblRollCall)、教師資料表(tblTeacher)等。然后找出每個表的主鍵、字段及表之間的具體對應(yīng)關(guān)系。從而定義數(shù)據(jù)接口,方便數(shù)據(jù)信息在不同平臺地讀寫。通過分析定義萬欣數(shù)據(jù)庫接口為:
(1) GetHistoryContracts(teacherID:String)//得到歷史預(yù)約
(2) GetCurrentContracts(teacherID:String)//得到當前預(yù)約
數(shù)據(jù)模式:Contract(CourseName, CourseID , Room, BeginLessonIndex, EndLessonIndex, TeacherName, StartDate, EndDate, Classes)
(3) GetSubContracts(contractID:WanXin.tblCourse. CourseID)//得到子預(yù)約信息。數(shù)據(jù)模式:SubContract (Date,WeekDay ,BeginTime, EndTime, BeginLessonIndex, EndLessonIndex, Room, AttendanceCount)
(4) GetAttendanceList(courseID,date,beginTime, endTime)//得到出席列表。數(shù)據(jù)模式:Attendance (StdName,ID,Class)
2 SOA架構(gòu)數(shù)字開放實驗室功能設(shè)計
本系統(tǒng)可分為三個角色(學(xué)生、教師、管理員),各角色分別具有各自功能。本系統(tǒng)主要有五大模塊:用戶信息、課程管理、設(shè)備管理、預(yù)約管理、實驗社區(qū)。數(shù)字開放實驗室角色功能,如表2所示。
表2 數(shù)字開放實驗室角色功能
角色 功能
管理員 用戶信息(信息錄入)、課程管理(導(dǎo)入課程、課程審核)、設(shè)備管理(設(shè)備錄入、設(shè)備維護、設(shè)備出借)、預(yù)約管理(待審核預(yù)約、已審核預(yù)約、歷史預(yù)約)、實驗社區(qū)(討論模塊、專題模塊、資源模塊、作品展示模塊)
教師 用戶信息(修改)、課程管理(申請課程、課程審核)、預(yù)約管理(預(yù)約設(shè)備或機房、待審核預(yù)約、已審核預(yù)約、歷史預(yù)約)、實驗社區(qū)(同上)
學(xué)生 用戶信息管理(修改)、課程管理(查看課程、申請選修課、瀏覽課堂信息)、預(yù)約管理(同教師)、實驗社區(qū)(同上)
本系統(tǒng)以學(xué)習(xí)者為中心,方便其獲取實驗室資源,有效地進行虛擬實驗指導(dǎo)。同時還在實驗社區(qū)中整合RSS聚合技術(shù),方便學(xué)習(xí)者訂閱感興趣的實驗專題;基于IM即時聊天功能的討論模塊中,為師生對實驗的相關(guān)問題搭建交流平臺;設(shè)置小組作品展示模塊,打破了時間及地域的界限,為學(xué)習(xí)者提供了思想碰撞的空間。通過在線網(wǎng)絡(luò),使學(xué)生、教師和管理員三者實現(xiàn)動態(tài)交互、共享資源。
3 SOA架構(gòu)數(shù)字開放實驗室系統(tǒng)開發(fā)
首先要開發(fā)一個在線數(shù)字開放實驗室,主要采用VisualStudio2008和SqlServer2005數(shù)據(jù)庫進行設(shè)計開發(fā)。此系統(tǒng)的體系結(jié)構(gòu)采用B/S模式的系統(tǒng)三層分布結(jié)構(gòu)。第一層是用戶層(USL),用戶可以從web界面直接獲得所需信息。為確保系統(tǒng)信息的安全性,建立前臺登錄界面(學(xué)生、教師)和后臺登錄界面(管理員)。第二層是業(yè)務(wù)邏輯層(BLL),業(yè)務(wù)邏輯層是系統(tǒng)的核心部分,它能夠封裝系統(tǒng)的業(yè)務(wù)服務(wù),負責(zé)處理用戶層(USL)的應(yīng)用請求,對其進行業(yè)務(wù)處理及邏輯判斷。如果判斷正確,就可以調(diào)用數(shù)據(jù)庫的內(nèi)容,進行數(shù)據(jù)處理,并將處理結(jié)果返回給用戶層(USL)。第三層是數(shù)據(jù)層(DLL),實現(xiàn)事務(wù)邏輯、數(shù)據(jù)邏輯,以及數(shù)據(jù)庫存儲與處理。開發(fā)SqlServer2005數(shù)據(jù)庫時,必須充分考慮前期分析的萬欣數(shù)據(jù)庫中的表及數(shù)據(jù)接口,以方便數(shù)據(jù)在數(shù)字開放實驗室及萬欣機房管理平臺之間進行讀寫。當開發(fā)數(shù)字開放實驗室時,也必須考慮整合萬欣機房管理系統(tǒng)。采用SOA架構(gòu)模式使平臺和服務(wù)接口進行綁定,對服務(wù)接口實現(xiàn)封裝。其中SOA的核心組件:Web Service,它是利用WCF技術(shù)開發(fā)Web Service標準服務(wù)接口的傳輸和調(diào)用的標準化,從而實現(xiàn)數(shù)字開放實驗室整合。萬欣機房管理平臺與數(shù)字開放實驗室整合后的通訊流程,如圖4所示。
通過Web Service標準對服務(wù)進行查詢和訪問,實現(xiàn)信息以文本的形式的跨平臺傳輸,實現(xiàn)了不同平臺之間實驗室信息互聯(lián)共享。其實也就是說,Web Service是將XML文本在各個平臺之間傳送和接收,以達到信息交換的目的。利用WCF開發(fā)萬欣機房管理系統(tǒng)的契約時,注意WCF代碼編程的基本規(guī)則。如:獲取教師信息的接口,代碼如下:
using System.ServiceModel;
{[ServiceContract]
publicinterface IWanXinService
{[OperationContract]
IEnumerable
}
}
當定義了獲取教師信息的接口后,定義真正可用的服務(wù)器,獲取教師信息的實現(xiàn)代碼如下:
public class WanXinServiceType:IWanXinService
{public TblTeacher GetTeacher(string logonName)
{CCMWF db = new CCMWF(ConfigurationManager.ConnectionStrings["CCMWF"].ConnectionString);
var result = (from t in db.TblTeachers
where t.LogonName == logonName
select t).Single
return result; }
}
而Data Contract則用于定義傳遞信息的形狀與規(guī)則。在WCF中自定義新類型時,需要用到[Data Contract]。如萬欣契約中定義Attendance類,在此類中有學(xué)生姓名、學(xué)號、班級信息。代碼如下:
using System.Runtime.Serialization;
[DataContract]
public class Attendance
{ [DataMember]
public string StdName;
[DataMember]
public string ID;
[DataMember]
public string Class;
}
數(shù)字開放實驗室系統(tǒng)整合萬欣機房管理平臺時,開發(fā)部分契約接口的代碼如下:
{[OperationContract]
IEnumerable
[OperationContract]
IEnumerable
[OperationContract]
IEnumerable
[OperationContract]
IEnumerable
[OperationContract]
IEnumerable
[OperationContract]
IEnumerable
……}
四 問題與展望
數(shù)字開放實驗室系統(tǒng)以整合的思想進行設(shè)計與開發(fā),縮短了網(wǎng)站研發(fā)周期,合理利用有效資源,并且提高了此系統(tǒng)的穩(wěn)定性、可擴展性和可伸縮性, 同時在Web2.0理念下整合實驗室資源,提高了資源利用率和學(xué)生、教師及管理員的工作效率。通過此系統(tǒng)學(xué)生和教師可以時時了解實驗室設(shè)備、機房及課程的相關(guān)資源,結(jié)合自己的興趣愛好,合理地安排時間進行創(chuàng)新研究、協(xié)作學(xué)習(xí)及探究學(xué)習(xí),能夠?qū)崿F(xiàn)動態(tài)管理實驗室。目前本系統(tǒng)在上海師范大學(xué)得到了很好的應(yīng)用。
但是隨著云計算的發(fā)展,此系統(tǒng)的弊端就是:本系統(tǒng)不能夠?qū)φ线M行遷移,不具備整合的可移動性[6]。如果能夠通過把SOA(面向服務(wù)的架構(gòu))與虛擬化結(jié)合在一起實現(xiàn)“基于實驗室政策的自動化”,那么在這種情況下,就能夠把實驗室基礎(chǔ)設(shè)施和應(yīng)用程序的托管轉(zhuǎn)移到數(shù)字開放實驗室系統(tǒng)。從而可以成功地把數(shù)字開放實驗室系統(tǒng)連接到實驗室制定的政策和服務(wù)水平上。此目標的實現(xiàn)需要很多方面地協(xié)作,但是如果能夠?qū)崿F(xiàn)將是質(zhì)的飛躍,它將把從面向服務(wù)的計算發(fā)展到“云”計算,最大限度地提高實驗室效益和功用性。將云計算用于系統(tǒng)的整合過程,實現(xiàn)整合的移植性,是我們下一步的研究目標。