文/劉波 鄭競(jìng)力 鄧洪志
隨著互聯(lián)網(wǎng)技術(shù)的進(jìn)一步發(fā)展,新型的教學(xué)考核手段得以應(yīng)用到臨床醫(yī)學(xué)教育中。為推進(jìn)考試科學(xué)化和信息化,使用醫(yī)學(xué)理論與實(shí)際操作在線考試系統(tǒng),能夠?qū)︶t(yī)學(xué)專業(yè)學(xué)生的平日學(xué)習(xí)效果進(jìn)行真實(shí)、直接、迅速的反映。華中科技大學(xué)在WCF框架下通過(guò)應(yīng)用Silverlight技術(shù)在瀏覽器客戶端來(lái)訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù),設(shè)計(jì)和實(shí)現(xiàn)了臨床醫(yī)學(xué)網(wǎng)絡(luò)考核系統(tǒng)。從系統(tǒng)開發(fā)的實(shí)踐效果來(lái)看,基于Silverlight和WCF的這種輕量級(jí)服務(wù)調(diào)用使開發(fā)出來(lái)的網(wǎng)絡(luò)應(yīng)用過(guò)程簡(jiǎn)單高效。整個(gè)系統(tǒng)很好地平衡了C/S、B/S結(jié)構(gòu)的優(yōu)缺點(diǎn),具有網(wǎng)絡(luò)響應(yīng)迅速、訪問(wèn)界面?zhèn)鬏斄鲿场⒔换?yīng)答快捷高效、服務(wù)器及訪問(wèn)終端系統(tǒng)并行運(yùn)行流暢等特點(diǎn)。
在線考核系統(tǒng)開發(fā)方法有以下幾種,如面向?qū)ο蟮姆椒ǎ∣bject Oriented Development),原型方法(Rapid Application Development),結(jié)構(gòu)化方法(Structured System Analysis and Design)等。在線考核系統(tǒng),要對(duì)并發(fā)的瀏覽器客戶端請(qǐng)求即時(shí)應(yīng)答,動(dòng)態(tài)生成不同的試卷頁(yè)面,還要記錄考生的每一步操作痕跡,因而對(duì)運(yùn)行效率要求較高。

圖1 三維結(jié)構(gòu)體系

圖2 原型化方法工作流程
軟件開發(fā)要從科學(xué)的角度來(lái)分析問(wèn)題,也要從過(guò)程的角度來(lái)解決問(wèn)題,最終的目標(biāo)就是將人類的信息系統(tǒng)管理方式或過(guò)程在最大程度上轉(zhuǎn)變?yōu)橛?jì)算機(jī)可以高效執(zhí)行的軟件系統(tǒng)。總體說(shuō)來(lái)包含三個(gè)方面的內(nèi)容,即系統(tǒng)的思想、數(shù)學(xué)的方法和計(jì)算機(jī)的技術(shù)。美國(guó)系統(tǒng)工程專家霍爾(H.hall)最先提出了由時(shí)間維、邏輯維和知識(shí)維三要素所組成的系統(tǒng)方法“三維結(jié)構(gòu)體系”(圖1),對(duì)軟件工程的理解和對(duì)軟件開發(fā)方法分析是非常有益的。
結(jié)合目前醫(yī)學(xué)科目考核的實(shí)際情況,醫(yī)學(xué)在線考核系統(tǒng)主要采用原型法以及面向?qū)ο蟮姆椒ǎ⒁越Y(jié)構(gòu)化程序設(shè)計(jì)為基礎(chǔ)來(lái)貫穿整個(gè)軟件的開發(fā)過(guò)程。
1.原型法
隨著新的程序設(shè)計(jì)語(yǔ)言、關(guān)系數(shù)據(jù)庫(kù)以及高效的系統(tǒng)開發(fā)環(huán)境得以應(yīng)用,軟件開發(fā)效率大大提高,出現(xiàn)了原型化軟件開發(fā)方法。原型化開發(fā)方法強(qiáng)調(diào)抓住核心和關(guān)鍵應(yīng)用,借助于高效的開發(fā)手段,快速構(gòu)造出系統(tǒng)原型,盡快提交給用戶一個(gè)可以試用和測(cè)試的系統(tǒng)模型。通過(guò)試用以后收集用戶的反饋信息,進(jìn)一步明確用戶需求,在系統(tǒng)原型的基礎(chǔ)之上修改程序來(lái)完善功能。由于原型系統(tǒng)可以實(shí)際運(yùn)行,也是最終系統(tǒng)的核心或組成部分,其構(gòu)造簡(jiǎn)便,完成速度快,付出代價(jià)也相對(duì)較低,解決了傳統(tǒng)結(jié)構(gòu)化開發(fā)方法開發(fā)周期長(zhǎng)、代價(jià)高的缺點(diǎn)。
原型化開發(fā)方法的基本過(guò)程如圖2所示。
值得注意的是,原型化方法也是以結(jié)構(gòu)化軟件開發(fā)方法為核心的,基本過(guò)程就是反復(fù)確認(rèn)用戶需求。但對(duì)于大規(guī)模的軟件開發(fā)來(lái)說(shuō),用戶的需求有時(shí)是難以明確甚至是隨著軟件的具體使用而不斷變化的,使得軟件修改變得非常困難。
2.面向?qū)ο蠓椒?/p>
面向?qū)ο蟮拈_發(fā)方法較好地解決了這個(gè)問(wèn)題,其核心就是將目標(biāo)轉(zhuǎn)移到系統(tǒng)中的對(duì)象身上,先設(shè)計(jì)好對(duì)象的屬性與行為,再考慮對(duì)象間的操作關(guān)系。系統(tǒng)中的每個(gè)對(duì)象都是一個(gè)單獨(dú)模塊,以對(duì)象為基礎(chǔ),加上對(duì)象之間的操作關(guān)系來(lái)構(gòu)成整個(gè)系統(tǒng)。面向?qū)ο蟮南到y(tǒng)開發(fā)過(guò)程,可分為系統(tǒng)需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn),以及系統(tǒng)測(cè)試等幾個(gè)步驟。如圖3所示。

圖3 面向?qū)ο箝_發(fā)模型
軟件體系結(jié)構(gòu)目前主要有兩大結(jié)構(gòu):C/S結(jié)構(gòu)和B/S結(jié)構(gòu)。與C/S“胖客戶端”結(jié)構(gòu)相比較,B/S“瘦客戶端”結(jié)構(gòu)的客戶端不需要安裝特殊的軟件,只要客戶端計(jì)算機(jī)能夠上網(wǎng)即可訪問(wèn)服務(wù)器。
隨著網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展,出現(xiàn)了“富”客戶端技術(shù)。“富”是指客戶端的交互模型,使之具有完全訪問(wèn)宿主操作系統(tǒng)和API的能力以及調(diào)用宿主系統(tǒng)的計(jì)算能力,從而出現(xiàn)多樣化輸入方式和符合用戶感覺的即時(shí)反饋手段。使得“富”客戶端模式的應(yīng)用使用起來(lái)就像是使用現(xiàn)有的桌面應(yīng)用軟件如Word,WPS一樣。
當(dāng)前主流的富客戶端技術(shù)包括Flash、Silverlight等,兩者的特點(diǎn)如表1所示。
.NET框架包括三個(gè)主要組成部分:公共語(yǔ)言、服務(wù)框架,以及兩類應(yīng)用模板(傳統(tǒng)的Windows應(yīng)用程序模板和基于ASP.NET的面向Web的網(wǎng)絡(luò)應(yīng)用程序模板)。
1.基于Silverlight的面向服務(wù)的富客戶端開發(fā)技術(shù)
Microsoft Silverlight翻譯為“微軟銀光”,是一種能在各種平臺(tái)上運(yùn)行的Web呈現(xiàn)技術(shù)。Silverlight這樣一個(gè)跨瀏覽器、跨平臺(tái)的插件,為網(wǎng)絡(luò)帶來(lái)多種基于.NET framework的交互式應(yīng)用程序。對(duì)于運(yùn)行在Macintosh和Windows上的瀏覽器,Silverlight都可以提供統(tǒng)一而豐富的用戶體驗(yàn)。

表1 Silverlight與Flash比較
2.基于WCF的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)
WCF(Windows Communication Foundation)是.NET框架的一部分,是一組數(shù)據(jù)通信的應(yīng)用程序開發(fā)接口。WCF集合了幾乎所有由 .NET Framework 所提供的通信方法,通信雙方的溝通方式由合約(Contact)來(lái)訂定。使得WCF可以支持傳輸層以及消息層的兩種安全層次。在 Visual Studio中,所有 WCF 服務(wù)的連接都是由客戶端的服務(wù)代理(WCF Service Proxy)來(lái)運(yùn)行的,開發(fā)人員不用花費(fèi)太多精力在通信上。而服務(wù)代理在Visual Studio項(xiàng)目中被稱為服務(wù)引用(Service Reference)。
在Visual Studio中添加 WCF 的服務(wù)引用方法非常簡(jiǎn)單,只需要在程序代碼中引用WCF Service Proxy 對(duì)象即可。Silverlight客戶端通過(guò)添加 Web Service 引用來(lái)調(diào)用服務(wù)方法從而完成數(shù)據(jù)訪問(wèn)操作。WCF是ASP.NET Web Service的發(fā)展或擴(kuò)展。
WCF Data Services是WCF服務(wù)框架下的具體實(shí)現(xiàn)方法,也稱為ADO.NET Data Service。服務(wù)器端通過(guò)ADO.NET Entity數(shù)據(jù)模型,將OData (Open Data Protocol)數(shù)據(jù)封裝為實(shí)體模型,然后通過(guò)WCF 服務(wù)來(lái)發(fā)布數(shù)據(jù);Silverlight 客戶端則通過(guò)添加 WCF服務(wù)引用并通過(guò)簡(jiǎn)單編碼實(shí)現(xiàn)異步調(diào)用來(lái)完成數(shù)據(jù)訪問(wèn)操作。Silverlightenabled WCF Service是Silverlight使用WCF服務(wù)操縱SQL Server的主要方法。在服務(wù)器端通過(guò)LINQ to SQL,將數(shù)據(jù)封裝為實(shí)體Model,通過(guò)手動(dòng)編碼實(shí)現(xiàn)數(shù)據(jù)的具體操作,發(fā)布Silverlightenabled WCF Service服務(wù);而客戶端通過(guò)添加WCF服務(wù)引用和簡(jiǎn)單編碼實(shí)現(xiàn)異步調(diào)用方法來(lái)完成數(shù)據(jù)訪問(wèn)操作。
WCF RIA Services:WCF RIA Services 簡(jiǎn)化了針對(duì)富Internet應(yīng)用程序 (RIA)的n層解決方案部署,比前面介紹的WCF服務(wù)和Web服務(wù)都要簡(jiǎn)單。基本方法也是首先在服務(wù)器端通過(guò)ADO.NET Entity數(shù)據(jù)模型,將數(shù)據(jù)進(jìn)行封裝,然后通過(guò) Domain Service發(fā)布服務(wù)。在Silverlight 客戶端,通過(guò)添加Domain Service引用和簡(jiǎn)單編碼實(shí)現(xiàn)同步調(diào)用實(shí)體類,從而完成業(yè)務(wù)數(shù)據(jù)的具體操作。
上述方法的優(yōu)缺點(diǎn),如表2所示。
數(shù)據(jù)庫(kù)兼容性一般:默認(rèn)只能訪問(wèn)SQL Server和Access,訪問(wèn)Oracle、DB2等數(shù)據(jù)庫(kù)需要安裝第三方插件。
以面向?qū)ο蠓椒ā⒃突椒橹笇?dǎo),以Silverlight富客戶端的B/S結(jié)構(gòu)作為軟件體系結(jié)構(gòu),網(wǎng)絡(luò)數(shù)據(jù)訪問(wèn)方式基于WCF Data Service方式訪問(wèn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)醫(yī)學(xué)理論與實(shí)際操作在線考試系統(tǒng)的設(shè)計(jì)和開發(fā)應(yīng)用。
通過(guò)需求分析,對(duì)系統(tǒng)的功能有了清晰的界定,確定系統(tǒng)的邏輯模型和物理模型,包括系統(tǒng)功能模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)等。系統(tǒng)設(shè)計(jì)工作包括系統(tǒng)總體設(shè)計(jì)、代碼編寫、系統(tǒng)配置以及數(shù)據(jù)存儲(chǔ)、功能模塊設(shè)計(jì)等。設(shè)計(jì)的基本原則是系統(tǒng)性、可靠性、靈活性以及經(jīng)濟(jì)性。
系統(tǒng)總體架構(gòu)如圖4所示,客戶端(帶Silverlight插件的瀏覽器)通過(guò)互聯(lián)網(wǎng)或局域網(wǎng)訪問(wèn)服務(wù)器,服務(wù)器上通過(guò)WCF服務(wù)訪問(wèn)數(shù)據(jù)庫(kù)。
整體上系統(tǒng)劃分為四個(gè)功能模塊,包括用戶信息管理、醫(yī)學(xué)信息管理、在線考察,以及系統(tǒng)管理。系統(tǒng)將用戶管理與系統(tǒng)管理加以區(qū)分,由系統(tǒng)管理員對(duì)用戶實(shí)施管理,而硬件系統(tǒng)維護(hù)工作則由系統(tǒng)管理完成。
Microsoft在Silverlight中的DataGrid沒(méi)有支持?jǐn)?shù)據(jù)集、數(shù)據(jù)表(DataSet, DataTable),這對(duì)于數(shù)據(jù)顯示來(lái)說(shuō)是十分不便的,而客戶端與服務(wù)端的高效數(shù)據(jù)傳遞并不容易實(shí)現(xiàn),因此,系統(tǒng)直接使用了由加拿大 LASKARZHEVSKY SOFTWARE INC開發(fā)的開源軟件來(lái)實(shí)現(xiàn)基于WCF的服務(wù)器端和客戶端即時(shí)信息交互。在Silverlight中通過(guò)WCF進(jìn)行異步數(shù)據(jù)訪問(wèn)的模式設(shè)計(jì)如圖5所示,執(zhí)行順序。
建立WCF服務(wù):考慮到返回的數(shù)據(jù)類型的差異,將WCF數(shù)據(jù)庫(kù)訪問(wèn)分為2類:查詢數(shù)據(jù),更新和刪除數(shù)據(jù)。
由于構(gòu)建Oracle數(shù)據(jù)庫(kù)服務(wù)器需要較高的配置,而目前MySQL數(shù)據(jù)庫(kù)系統(tǒng)搭建比較容易,占用資源也不多,因此,在開發(fā)過(guò)程中,靈活地配置了2種模式:調(diào)試過(guò)程中使用MySQL數(shù)據(jù)庫(kù)系統(tǒng),在后期測(cè)試和發(fā)布轉(zhuǎn)移到Oracle系統(tǒng)。
由于進(jìn)行了較好的封裝,這種轉(zhuǎn)移很容易實(shí)現(xiàn)。
服務(wù)引用:設(shè)計(jì)好數(shù)據(jù)庫(kù)存取服務(wù)代碼(dataAccess_wcf_serviceRef.svc,代碼源文件為dataAccess_wcf_serviceRef.svc.cs)之后,在項(xiàng)目文件中添加服務(wù)引用。
得到服務(wù):dataAccess_ServiceReference。

表2 Silverlight客戶端數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)比較

圖4 系統(tǒng)總體架構(gòu)

圖5 WCF異步訪問(wèn)數(shù)據(jù)庫(kù)模式
整個(gè)考試系統(tǒng)包含了用戶管理、權(quán)限認(rèn)證,試題與試卷資源建設(shè)與維護(hù),考試過(guò)程控制和統(tǒng)計(jì)分析、信息反饋等四大部分,分別由各自的數(shù)據(jù)庫(kù)支持,在線考核時(shí)每個(gè)用戶使用“富”瀏覽器客戶端遠(yuǎn)程登錄考核系統(tǒng),動(dòng)態(tài)生成不重復(fù)的整套考核試卷,每個(gè)題目都以一個(gè)單獨(dú)的窗口臨時(shí)生成。
考核系統(tǒng)實(shí)時(shí)記錄被考核對(duì)象的每一個(gè)電子動(dòng)作,并將紀(jì)錄即時(shí)發(fā)往相應(yīng)數(shù)據(jù)庫(kù)紀(jì)錄保存,待考核結(jié)束或計(jì)時(shí)結(jié)束后立即產(chǎn)生考核結(jié)果。
隨著校園網(wǎng)絡(luò)的高速發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,網(wǎng)絡(luò)在線考核平臺(tái)已成為校園網(wǎng)的一個(gè)重要應(yīng)用部分,替代舊的考核機(jī)制在醫(yī)學(xué)領(lǐng)域得以廣泛應(yīng)用。傳統(tǒng)紙質(zhì)試卷中,圖片只能單色顯示。而微生物學(xué)、病理學(xué)、診斷學(xué)、解剖學(xué)、影像學(xué)等學(xué)科中,可放大的彩色圖片能更真實(shí)直觀準(zhǔn)確地呈現(xiàn)試題。在線考核系統(tǒng)可提供大體結(jié)構(gòu)、顯微結(jié)構(gòu)、免疫ELISA法進(jìn)行的微生物革蘭氏染色結(jié)果等涵蓋形態(tài)學(xué)、X片判讀、心電圖等專業(yè)彩色顯像技術(shù)。為廣大學(xué)生提供“靈活、方便、科學(xué)、公平”的學(xué)習(xí)測(cè)評(píng)服務(wù)。通過(guò)在線考核系統(tǒng)對(duì)學(xué)生學(xué)習(xí)進(jìn)行考核,了解學(xué)生學(xué)習(xí)效果,為改進(jìn)教學(xué)提供了依據(jù)。實(shí)現(xiàn)了網(wǎng)絡(luò)題庫(kù)的及時(shí)更新和維護(hù),也保證了試題更新滿足教學(xué)的要求。相對(duì)紙質(zhì)化的考試而言具有省時(shí)、省力、存儲(chǔ)方便等優(yōu)點(diǎn)。當(dāng)然,由于此項(xiàng)工作實(shí)施還處在試點(diǎn)起步階段,還有很多細(xì)節(jié)需要補(bǔ)充,但在校園網(wǎng)絡(luò)應(yīng)用和發(fā)展上指出了一個(gè)新的方向。