譚 寧
[摘要]介紹SOA的概念、特征、優(yōu)點等,較為深入討論SOA的實現(xiàn)技術(shù)Web Services及在.NET平臺上的創(chuàng)建、發(fā)布和客戶端調(diào)用過程。其次,通過對高校試題庫的需求分析,提出基于SOA的高校試題庫系統(tǒng)的系統(tǒng)架構(gòu)和分層設(shè)計。
[關(guān)鍵詞]面向服務(wù)的體系結(jié)構(gòu) Web服務(wù) .NET 試題庫
中圖分類號:TP3文獻標(biāo)識碼:A文章編號:1671-7597(2009)0220044-01
一、系統(tǒng)的功能
學(xué)生使用教師或者考試管理員分配的賬號登錄考試系統(tǒng),然后選擇需要參加的考試科目。選定考試科目后,開始答題。系統(tǒng)自動計算學(xué)生已經(jīng)參考的時間。如果在考試時間內(nèi)沒有答完試卷,系統(tǒng)自動交卷。交卷后,系統(tǒng)馬上批閱試卷,并給考試結(jié)果。系統(tǒng)需要解決的主要問題因為考試是有特定的對象的,所以考生進入系統(tǒng)應(yīng)該進行身份驗證??忌M入考試系統(tǒng)后,需要選擇考試科目,所以系統(tǒng)還應(yīng)有考試科目選擇的功能。本系統(tǒng)的用戶可分為系統(tǒng)管理員,普通管理員(或教師),學(xué)生和普通用戶四類。
二、系統(tǒng)架構(gòu)總體設(shè)計
(一)SOA架構(gòu)
該試題庫系統(tǒng)采用SOA架構(gòu),其中服務(wù)實現(xiàn)技術(shù)由Microsoft.NET的Web Services來實現(xiàn)。系統(tǒng)中各模塊的功能都定義為獨立的服務(wù),這些服務(wù)為表示層(客戶端)顯露可調(diào)用的Web Service接口。業(yè)務(wù)外觀層,通過單個服務(wù)或者多個服務(wù)的組合來形成業(yè)務(wù)流程,從而為表示層提供了一個整體的業(yè)務(wù)邏輯視圖。根據(jù)SOA架構(gòu)的特征,在該系統(tǒng)中采用SOA架構(gòu)將獲得以下優(yōu)勢:
(1)客戶端技術(shù)。無論是Windows Forms客戶端還是Web客戶端程序或者是外部程序(其他系統(tǒng)或者Web服務(wù)),都可以通過標(biāo)準(zhǔn)化的Web Service接口的調(diào)用來獲得業(yè)務(wù)邏輯。
(2)集成度。合作院校的外部用戶也能像內(nèi)部用戶一樣訪問相同的服務(wù),這樣可以更好的集成本校和合作院校的信息。比如,在組卷模塊中,通過發(fā)布用戶注冊服務(wù)和組卷服務(wù),合作院校的外部客戶就可以在自己的系統(tǒng)中直接調(diào)用該服務(wù)而獲得題庫信息和組卷的服務(wù)。
(3)系統(tǒng)。系統(tǒng)的業(yè)務(wù)邏輯可以完全以第三方提供的服務(wù)或者服務(wù)組合來實現(xiàn)。假設(shè)一個高校需要共享和獲得試題庫資源的服務(wù)等功能,則唯一需要做的是根據(jù)本校的需要開發(fā)自己風(fēng)格的客戶端展示界面,然后遠(yuǎn)程連接服務(wù)提供商提供的標(biāo)準(zhǔn)的用戶注冊、試題采編、組卷等業(yè)務(wù)邏輯的Web服務(wù)。而專業(yè)的服務(wù)提供商則開發(fā)業(yè)務(wù)邏輯服務(wù)組件,并為用戶提供業(yè)務(wù)邏輯服務(wù),不同的院校用戶組合這些邏輯來實現(xiàn)自己的業(yè)務(wù)需求。
(二)分層體系結(jié)構(gòu)
試題庫系統(tǒng)采用分層體系結(jié)構(gòu),從外到內(nèi)主要分為如下幾層:表示層、業(yè)務(wù)外觀層、業(yè)務(wù)層、數(shù)據(jù)訪問層和數(shù)據(jù)庫層。
表示層主要提供友好的用戶界面,使得最終用戶能夠方便地使用本系統(tǒng)。在該系統(tǒng)中,表示層主要包括注冊、登陸、試題采編、組卷、查詢等模塊的用戶界面的實現(xiàn)及表單提交、與下一層的交互(調(diào)用業(yè)務(wù)外觀層的Web服務(wù)接口)等功能。
業(yè)務(wù)外觀層主要提供標(biāo)準(zhǔn)化的服務(wù)接口,從而使得該服務(wù)可以提供給在任何異構(gòu)平臺和任何本地或者遠(yuǎn)程用戶使用。在該系統(tǒng)中,通過引入業(yè)務(wù)外觀層,隔離了業(yè)務(wù)層和表示層,確保了此兩層之間的相互獨立、松散耦合,提高了業(yè)務(wù)邏輯組件的復(fù)用性和應(yīng)對需求變化的能力。在該系統(tǒng)中,業(yè)務(wù)外觀層用注冊、登錄、試題采編、組卷等Web Services封裝了業(yè)務(wù)邏輯組件及細(xì)粒度業(yè)務(wù)Web服務(wù)。
業(yè)務(wù)層主要提供系統(tǒng)的業(yè)務(wù)邏輯和控制,細(xì)粒度的服務(wù)也在該層得以實現(xiàn)。該系統(tǒng)中,業(yè)務(wù)層主要包括:注冊、登陸、試題采編、組卷、查詢等組件。
數(shù)據(jù)訪問層主要提供了業(yè)務(wù)組件和底層數(shù)據(jù)的一個平滑過渡,使得業(yè)務(wù)層只處理業(yè)務(wù)邏輯而不必關(guān)心底層的數(shù)據(jù)模式。在該系統(tǒng)中,所有后臺試題庫數(shù)據(jù)庫表(如課程總表、題型總表、試題表集、知識點總表、試卷總表、試卷表集、系統(tǒng)用戶信息表、用戶組信息表等)的操作都被封裝在一個數(shù)據(jù)訪問組件(借助ADO.NET來實現(xiàn))中。
數(shù)據(jù)層主要提供了數(shù)據(jù)信息和數(shù)據(jù)邏輯,所有與數(shù)據(jù)有關(guān)的安全性、完整性、數(shù)據(jù)的一致性、并發(fā)操作等都在數(shù)據(jù)層。
系統(tǒng)的層次化結(jié)構(gòu),使得系統(tǒng)在各層次上的組件能單獨更新、替換或增加、拆除。因此,系統(tǒng)維護更方便,代價相對低得多。而且,因各組件互相獨立,更換組件對系統(tǒng)其它部分并無影響,所以更新維護更加安全可靠。系統(tǒng)的分層結(jié)構(gòu),可以使得軟件開發(fā)的專業(yè)化分工成為可能。高度的專業(yè)分工,一方面由于系統(tǒng)開發(fā)的細(xì)分,使得系統(tǒng)精確度提高,另一方面也會促使系統(tǒng)開發(fā)的高度協(xié)作,從而使得流水線生產(chǎn)的引入變得勢在必行,其最終將會導(dǎo)致軟件大規(guī)模生產(chǎn)的到來。
(三)技術(shù)架構(gòu)總體設(shè)計
從整體架構(gòu)來看,本系統(tǒng)是以SOA為基礎(chǔ)的解決方案,整個系統(tǒng)由若干服務(wù)和服務(wù)組合構(gòu)成。在概念上,可以將服務(wù)視為整個解決方案的組件。這里僅簡介表示層和數(shù)據(jù)訪問層采用的技術(shù)。
(1)表示層。表示層為用戶提供友好的使用界面。當(dāng)前,客戶端應(yīng)用程序模型最為常用的有兩種:客戶端/服務(wù)器模型(C/S)和瀏覽器/服務(wù)器模型(B/S)。由于本系統(tǒng)的開放特性,用戶點比較多、規(guī)模較大、部署和維護成本較高,因此采用瀏覽器/服務(wù)器模型。采用B/S模型具有易于安裝和部署、維護的優(yōu)勢。該層實現(xiàn)技術(shù)采用ASP.NET技術(shù)和C#語言。
(2)數(shù)據(jù)訪問層。數(shù)據(jù)訪問層主要負(fù)責(zé)業(yè)務(wù)層和數(shù)據(jù)層之間的交互。因為數(shù)據(jù)庫是最常用,也是最有效的數(shù)據(jù)存儲方法,因此,支持高效的數(shù)據(jù)庫存儲是數(shù)據(jù)訪問層首要考慮的問題。在Windows.NET平臺下,使用ADO.NET來連接和訪問數(shù)據(jù)庫。在數(shù)據(jù)庫的訪問中,所有的操作都可以分為這么幾大類:數(shù)據(jù)庫的連接、查詢、插入、修改和刪除,是非常有規(guī)律的。這樣使得可以讓這個工作通過封裝成獨立的一個組件(DAL組件)來執(zhí)行。這樣,一方面可以簡化很多同數(shù)據(jù)庫交互方面的代碼編寫工作量,能夠減少出現(xiàn)出錯率,另一方面,由于框架封裝了不同數(shù)據(jù)庫之間的差異,使得在編寫程序的時候,不用考慮不同數(shù)據(jù)庫之間的差異,而將這個工作交給DAL去做,從而實現(xiàn)了系統(tǒng)的后臺數(shù)據(jù)庫無關(guān)性。
通過對系統(tǒng)的功能性需求分析,并針對面向服務(wù)的軟件體系結(jié)構(gòu),給出了該系統(tǒng)框架設(shè)計。從目前高校的信息化建設(shè)的實際情況來看,技術(shù)整合、信息資源共享和快速應(yīng)對需求變化是一個相當(dāng)迫切的需要。對試題庫系統(tǒng)采用SOA架構(gòu)進行構(gòu)建是一個有意義的嘗試。
參考文獻:
[1]周珂,基于SOA軟件架構(gòu)的企業(yè)應(yīng)用[J]. 微機發(fā)展,2005.11.
[2]鄭曉東、王志堅、周曉峰,一種基于Web Service的分布式計算模型研究及其實現(xiàn)[J]. 計算機工程與應(yīng)用,2004.01.
作者簡介:
譚寧,男,漢,副教授,研究方向為計算機網(wǎng)絡(luò)。