朱 渝,郭 毅
ZHU Yu,GUO Yi
(四川理工學院 圖書館,自貢 643000)
區(qū)域圖書館是目前圖書館發(fā)展的一個重要的模式,主要是通過對某一行業(yè)或地理區(qū)域的文獻資源進行整合,形成一個基于網(wǎng)絡的虛擬圖書館,實現(xiàn)圖書館的文獻資源建設、流通等功能。Windows Communication Foundation (WCF)是Microsoft為構建面向服務的應用提供的分布式通信編程框架,是.NET Framework 3.5的重要組成部分。使用該框架,開發(fā)人員可以構建跨平臺、安全、可靠和支持事務處理的區(qū)域圖書館?;赪CF構建區(qū)域圖書館的過程中,能使用SOA對圖書館的各種服務和功能進行規(guī)劃,通過契約對服務進行公開和約定,可以使用OO對具體的服務進行設計,最終通過WCF這一平臺或編程模型來實現(xiàn)區(qū)域圖書館。
現(xiàn)代的區(qū)域圖書館應該是一個以服務為中心的圖書館。區(qū)域圖書館的可以看作是一個又文獻的查詢、借閱、傳遞、咨詢、讀者認證等多種服務通過松耦合形成的一個服務集,那么在規(guī)劃的時候就需要面向服務的體系結構(Service-Oriented Architecture,SOA)這一個組件模型來實現(xiàn)。同時,區(qū)域圖書館的各個成員的提供的信息資源彼此孤立,結構各異,這也需要將這些異構資源進行整合和封裝,使得SOA也成為了一個必然的選擇。(參考基于SOA的數(shù)字圖書館研究)
一方面,區(qū)域圖書館的特性使得SOA成為系統(tǒng)設計的必然選擇,另一方面, WCF合并了當前分布式系統(tǒng)技術,為SOA提供了良好的支撐。WCF的編程模型為區(qū)域圖書館的實現(xiàn)提供了統(tǒng)一、簡化并且可管理的分布式系統(tǒng)開發(fā)的方法,能夠很好的支持SOA。使得我們能夠在設計區(qū)域圖書館的時候采用SOA,并通過WCF來編程模型來實現(xiàn)一個松散耦合的區(qū)域圖書館系統(tǒng)。
圖1 文獻傳遞
例如,使用WCF可以這樣來設計區(qū)域圖書館中的文獻傳遞系統(tǒng)(如圖1所示)。整個文獻傳遞系統(tǒng)主要包括兩項服務:1)文獻傳遞處理服務,主要用來接收文獻請求;2)文獻發(fā)送處理,主要用來對請求的文獻進行發(fā)送。在區(qū)域圖書館中,需要處理文獻傳遞請求數(shù)量很大,必須在文獻傳遞處理器前加入一個路由器將傳遞請求分發(fā)到某個文獻傳遞處理服務。在文獻分發(fā)處理系統(tǒng)前面也加上一個分發(fā)路由器,其功能和文獻傳遞路由器相同,將文獻分發(fā)的請求轉發(fā)到某個分發(fā)處理系統(tǒng)。其他的內部系統(tǒng)能與和文獻傳遞系統(tǒng)相互通信和交換信息,和文獻傳遞服務之間相互獨立自治,任何一個服務的改動都不會影響其他服務。
根據(jù)區(qū)域圖書館特點能夠很快的構劃出區(qū)域圖書館的SOA服務模型,當各個服務以及服務之間的聯(lián)系一旦建立,我們就需要為區(qū)域圖書館的各個服務綁定到一個或多個端點上去,并通過契約來約束客戶端端點允許的操作和有效服務方法使用的數(shù)據(jù)類型。
契約是用戶定義某些方面的服務,如消息的格式與結構,以及具有同等重要性的服務的行為。(應用書WCF高級編程29頁)在WCF中支持有三種契約格式,分別是服務契約、消息契約和數(shù)據(jù)契約。在應用這些服務在設計區(qū)域圖書館的服務的時候,主要是使用服務契約,來告訴客戶提供的小事數(shù)據(jù)類型、操作位置、通信協(xié)議以及服務提供的操作等內容。如區(qū)域圖書館中的讀者認證服務可以通過服務契約定義對服務端點有效的用戶認證、密碼修改、用戶查詢等有效的操作,還可以定義這些操作基本的消息交換模式,是單向、雙向的。具體的實現(xiàn)可以通過WCF中的類和接口來進行定義。消息契約主要是對SOAP的控制,數(shù)據(jù)契約主要定義交換的數(shù)據(jù)協(xié)議,在設計這兩個級別的契約一般很少用到。
WCF中可以使用SOA在規(guī)劃整個區(qū)域圖書館的中的各種服務以及服務和服務之間的關系。具體的實現(xiàn)某一服務的時候,除了使用契約來聲名這一服務的行為和規(guī)范外,還需要對服務的具體行為進行設計和編碼。這個時候在WCF中可以使用面向對象的方法(OO)來設計,通過對程序設計到的對象和對象屬性、行為的分析,可以設計出一個一個結構清晰的區(qū)域圖書館中的具體服務內容。在WCF中對OO和SO的設計都能很好的支撐,并能使這兩種方法同時應用到系統(tǒng)程序中去,這對于在構建區(qū)域圖書館的時候,可以靈活方便的選擇自己熟悉的設計方法。
比如,在實現(xiàn)服務器端的讀者驗證服務的時候,用接口來定義并使用契約來聲明。在LibUser類中來實現(xiàn)這個接口,就可以通過在類中的公開方法來實現(xiàn)用戶的登陸和注銷了。
WCF中通過SOAP進行通信的,這樣一來能提高整個區(qū)域圖書館的通信效率和安全性,同時使得通信能夠跨越不同的操作系統(tǒng)平臺;由于基于WCF的區(qū)域圖書館服務和通信通過應用XML來解決各種異構數(shù)據(jù)之間通信問題,就可以將區(qū)域內的各種異構資源很好的進行整合,使的服務還能跨越不同的數(shù)據(jù)源[3]。最后,我們在客戶端只需要發(fā)現(xiàn)和調用服務,就能夠使用區(qū)域圖書館了。
[1] 百度百科.WCF [EB/OL].http://baike.baidu.com/view/1140438.htm?fr=ala0_1_1.2010-9-14.
[2] 徐震.基于SOA的數(shù)字圖書館研究[J].圖書館學研究,2009(10):13-15.
[3] 年福豐,劉秋讓.基于WCF的異構數(shù)據(jù)源集成系統(tǒng)的研究和實現(xiàn)[J].科學技術與工程,2009(11):3116-3119.
[4] scot klein.WCF高級編程.北京:清華大學出版社,2008.
[5] 黃文鏑,廖小梅,劉磊.論區(qū)域圖書館區(qū)位設置與規(guī)劃[J].圖書與情報,2009(6):8-13,50.
[6] 范亞芳,王傳衛(wèi).我國高校區(qū)域性圖書館聯(lián)盟建設模式研究[J].圖書館,2008(1):65-67,80.