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