趙增和
(天津市靜海縣圖書館,天津 301600)
圖書館特色資源元數(shù)據(jù)API實(shí)現(xiàn)與比較研究
——以Web Service API與Widget API為例
趙增和
(天津市靜海縣圖書館,天津 301600)
介紹了特色資源在當(dāng)前圖書館價(jià)值取向轉(zhuǎn)變中所起到的重要作用,分析了圖書館為自建特色數(shù)據(jù)庫元數(shù)據(jù)提供API,實(shí)現(xiàn)資源開放獲取,拓展特色資源服務(wù)渠道的迫切需求,以及資源開放過程中對知識(shí)產(chǎn)權(quán)的保護(hù),并以某大學(xué)開展的學(xué)位論文數(shù)據(jù)庫拓展服務(wù)為例,介紹了兩種API——基于WCF框架的Web Service API、采用jQuery開發(fā)的Widget API方式,并分析了兩種不同方式的優(yōu)缺點(diǎn)及適用環(huán)境。
圖書館特色資源 API開放共享 安全控制
隨著信息服務(wù)網(wǎng)絡(luò)化的發(fā)展以及信息開放理念的興起,圖書館的價(jià)值取向也悄然轉(zhuǎn)變,資源服務(wù)及知識(shí)傳播已從原有的僅為在校師生提供檢索查詢轉(zhuǎn)變?yōu)樾畔⒌拈_放互動(dòng)與溝通共享,這對高校圖書館提出了全新的要求。在Web 2.0的用戶參與、互動(dòng)與分享以及開放圖書館理念的指導(dǎo)下,大學(xué)圖書館需要根據(jù)資源的特點(diǎn),以更開放的心態(tài)迎接讀者以及信息資源和信息服務(wù)日益泛在化的挑戰(zhàn)。在世紀(jì)之交的十多年里,大學(xué)圖書館的數(shù)據(jù)信息量越來越龐大,它依托自身館藏信息資源,針對用戶的信息需求,對某一學(xué)科或某一專題的信息進(jìn)行收集、歸納、分類、整理、存儲(chǔ),按照一定標(biāo)準(zhǔn)和規(guī)范將其數(shù)字化,自建了很多特色數(shù)據(jù)庫,并以互聯(lián)網(wǎng)為平臺(tái),面向廣大師生用戶提供基于內(nèi)容的服務(wù),特色數(shù)據(jù)庫成為圖書館不同于互聯(lián)網(wǎng)其他信息提供者的優(yōu)勢資源,能夠在相關(guān)領(lǐng)域?yàn)樽x者提供“專業(yè)、精準(zhǔn)、高速”的信息檢索。在保護(hù)知識(shí)產(chǎn)權(quán)的前提下,圖書館針對特色資源開發(fā)API供第三方調(diào)用,是充分挖掘特色館藏資源、在更大范圍內(nèi)被其他機(jī)構(gòu)或者用戶利用、拓展圖書館服務(wù)和體現(xiàn)資源深層價(jià)值的有效方式[1,2],既可以為圖書館特色數(shù)據(jù)庫增加附加值和新的訪問點(diǎn),擴(kuò)展特色資源的使用范圍和使用價(jià)值,又可以使第三方通過混搭的方式使用圖書館資源,實(shí)現(xiàn)圖書館服務(wù)的無處不在。
圖書館特色數(shù)據(jù)庫種類眾多,屬性和軟件架構(gòu)各異,對于一些特色數(shù)據(jù)庫,圖書館想要為其添加新的功能或者開放新的接口,必須求助于供應(yīng)商,或者支付一定的費(fèi)用,并且有的廠商并不提供相關(guān)的服務(wù)。然而如果圖書館一旦“進(jìn)入”到其架構(gòu)系統(tǒng),幾乎所有的事情都是可能的,因此我們嘗試借助相關(guān)的技術(shù),“強(qiáng)行”進(jìn)入原本封閉的特色數(shù)據(jù)庫架構(gòu)系統(tǒng),實(shí)現(xiàn)拓展特色資源價(jià)值的想法。由于圖書館特色數(shù)據(jù)庫的平臺(tái)各異及版權(quán)屬性限制,在開發(fā)及開放特色數(shù)據(jù)庫過程中需要在保護(hù)知識(shí)產(chǎn)權(quán)的前提下,盡量使用通用框架,屏蔽圖書館特色數(shù)據(jù)庫與第三方調(diào)用者平臺(tái)的異構(gòu)性、開發(fā)語言的多樣性,并且確保推送過程中的數(shù)據(jù)資源在可控范圍內(nèi)被合法、安全利用。
學(xué)位論文是高校圖書館特色資源的重要組成部分,筆者以某大學(xué)圖書館學(xué)位論文數(shù)據(jù)庫拓展服務(wù)為例[3],介紹兩種圖書館特色數(shù)據(jù)庫元數(shù)據(jù)API的實(shí)現(xiàn)及比較——基于WCF框架開發(fā)的Web Service API方式,以及采用jQuery開發(fā)的Widget API方式。某大學(xué)學(xué)位論文數(shù)據(jù)庫以TPI為平臺(tái),KBase數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù),系統(tǒng)部署在圖書館本地,TPI屬于早年開發(fā)的商用特色資源數(shù)據(jù)庫發(fā)布系統(tǒng),系統(tǒng)開放性較差,通過上述兩種技術(shù)打破學(xué)位論文數(shù)據(jù)庫的固有圍墻,實(shí)現(xiàn)學(xué)位論文元數(shù)據(jù)開放共享,拓展學(xué)位論文服務(wù)范圍。
2.1 Web Service API
Web Service是一個(gè)URL資源,客戶端可以通過編程方式請求得到它的服務(wù),而無需知道所請求的服務(wù)是如何實(shí)現(xiàn)的,這一點(diǎn)與傳統(tǒng)的分布式組件對象模型不同,其有兩層含義:一是指封裝成單個(gè)實(shí)體并發(fā)布到網(wǎng)絡(luò)上的功能集合體;二是指功能集合體被調(diào)用后所提供的服務(wù)。Web Service的體系結(jié)構(gòu)是基于Web服務(wù)提供者、請求者、服務(wù)管理者(注冊中心)三個(gè)角色和服務(wù)發(fā)布、服務(wù)發(fā)現(xiàn)、服務(wù)綁定三個(gè)動(dòng)作構(gòu)建而成,如圖1所示。簡單地說,Web服務(wù)提供者即Web服務(wù)的擁有者,它等待為其他服務(wù)和用戶提供已有的功能;Web服務(wù)請求者即Web服務(wù)功能的使用者,它利用SOAP消息向Web服務(wù)提供者發(fā)送請求以獲得服務(wù);Web服務(wù)管理者的作用是把一個(gè)Web服務(wù)請求者與合適的Web服務(wù)提供者聯(lián)系在一起,它充當(dāng)管理者的角色。
圖1 Web Service體系結(jié)構(gòu)
(1)開發(fā)實(shí)現(xiàn)框架
Web Service API是用所開發(fā)的Web Service替換用戶對學(xué)位論文數(shù)據(jù)庫的直接獲取服務(wù),調(diào)用者通過調(diào)用所發(fā)布的URL獲取學(xué)位論文元數(shù)據(jù)。在技術(shù)實(shí)現(xiàn)環(huán)節(jié),采用WCF技術(shù)[4]以面向服務(wù)的方式來創(chuàng)建學(xué)位論文Web Service API,實(shí)現(xiàn)數(shù)據(jù)的推送服務(wù)。WCF最突出的特點(diǎn)體現(xiàn)在互操作、安全可信賴以及通用性方面,并以一系列協(xié)議的定義、實(shí)現(xiàn)、發(fā)布為流程和框架實(shí)現(xiàn)。
①定義服務(wù)協(xié)定
在應(yīng)用程序中添加IService.cs接口,以為第三方開放的數(shù)據(jù)及查詢方式為服務(wù)協(xié)定進(jìn)行定義,公布可以對外提供服務(wù)的操作、操作返回的數(shù)據(jù)類型、需要傳入的參數(shù)個(gè)數(shù)、參數(shù)類型等。如某大學(xué)研究生院要求讀者能夠在研究生網(wǎng)站上通過專業(yè)查詢相關(guān)導(dǎo)師指導(dǎo)的研究生論文情況,定義服務(wù)協(xié)定如下:
[Operation Contract]//定義服務(wù)協(xié)定,專業(yè)代碼為參數(shù),返回論文數(shù)據(jù)集
DataSet GetDataByMajor(string majorCode)
②實(shí)現(xiàn)服務(wù)協(xié)定
實(shí)現(xiàn)服務(wù)協(xié)定,定義一個(gè)類Service.cs以實(shí)現(xiàn)IService.cs接口中定義的所有服務(wù)協(xié)定,并返回相關(guān)結(jié)果。如,依照研究生院與某大學(xué)圖書館的服務(wù)協(xié)定,實(shí)現(xiàn)程序返回給研究生院導(dǎo)師所輔導(dǎo)論文的學(xué)生姓名、論文題目、摘要等:
//創(chuàng)建數(shù)據(jù)表函數(shù),用于存儲(chǔ)論文元數(shù)據(jù)的各個(gè)屬性值并返回:
③搭建宿主,承載服務(wù)
公開WCF服務(wù),需要提供一個(gè)運(yùn)行服務(wù)的宿主環(huán)境,以IIS+.NET Framework 4.0+WCF環(huán)境為例,以IIS作為宿主來承載服務(wù),承載于IIS中的WCF服務(wù)在IIS應(yīng)用程序內(nèi)表示為特殊內(nèi)容文件(Service.svc文件)。.svc文件包含WCF特定的處理指令(@ServiceHost),該指令允許WCF承載基礎(chǔ)結(jié)構(gòu)激活所承載的服務(wù),以響應(yīng)傳入消息。.svc文件的最常見語法如下所示。
<%@ServiceHost Language="C#"Debug="true"Service= "Service"CodeBehind="~/App_Code/Service.cs"%>
(2)安全控制機(jī)制
API作為一種數(shù)據(jù)傳遞方式,數(shù)據(jù)安全是開發(fā)過程中需要首先考慮的。在Web Service API方式中,采用X509證書[5]作為數(shù)據(jù)安全認(rèn)證控制方式,加密通過證書對(服務(wù)器客戶端各一個(gè))完成,經(jīng)過X509證書加密后的輸入及獲取到的輸出內(nèi)容,均是被加密的密文,在數(shù)據(jù)傳遞過程中無法看到明文,能確保數(shù)據(jù)傳輸過程私密、安全、可靠,并且實(shí)現(xiàn)這樣的加密操作,在調(diào)用上不會(huì)受到任何影響,只需在WCF服務(wù)以及調(diào)用的客戶端進(jìn)行一些文件配置等操作即可,其實(shí)現(xiàn)方式具有高配置型、靈活性的特點(diǎn),基于X509證書加密的操作流程如圖2所示。
通過.NET的makecert命令為WCF服務(wù)應(yīng)用創(chuàng)建客戶證書和服務(wù)端的X509證書,命令如下:
makecert-sr localmachine-ss my-n CN=127.0.0.1-skyexchange-pe-r
此處“my”為生成的證書名字,CN后為服務(wù)器IP地址或服務(wù)器機(jī)器名稱。
在授權(quán)調(diào)用控制環(huán)節(jié),通過調(diào)用端和服務(wù)器端的證書對匹配,確保數(shù)據(jù)被合法者調(diào)用。在服務(wù)器端,將證書以私鑰導(dǎo)出到本地硬盤、授權(quán)IIS訪問服務(wù)器證書,以及將證書導(dǎo)入到服務(wù)器計(jì)算機(jī)的“受信任的根證書頒發(fā)機(jī)構(gòu)”和“受信任人”存儲(chǔ)區(qū),給證書加everyone權(quán)限,并將證書頒發(fā)給合法的Web Service API調(diào)用方。調(diào)用端,將證書安裝到“受信任的根證書頒發(fā)機(jī)構(gòu)”中,給證書加everyone權(quán)限。最后,要確保證書的啟用,使X509證書服務(wù)生效,需要在Web.config中加入服務(wù)器IP。如下:
圖2 基于X509證書加密的操作流程
其中*.*.*.*為服務(wù)器IP。
(3)調(diào)用方式
Web Service作為一個(gè)URL資源,客戶端無需了解學(xué)位論文數(shù)據(jù)庫的結(jié)構(gòu)屬性,通過調(diào)用http://localhost/webservice/Service.svc,就可以像調(diào)用本地的函數(shù)一樣調(diào)用Web Service接口獲取相關(guān)資源,通過調(diào)用端和服務(wù)器端的證書對匹配,確保調(diào)用者的合法性,最終實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)的安全通信與共享。
2.2 Widget API
Widget技術(shù)來源于互聯(lián)網(wǎng),其以一種嶄新的表現(xiàn)形式超越了瀏覽器和客戶端的傳統(tǒng)分類,Web Widget是輕量級的Web應(yīng)用程序,調(diào)用者只需在頁面上嵌入相關(guān)的JavaScript就可以運(yùn)行在多種終端之上,并且功能豐富,使用簡單,可以方便應(yīng)用在站內(nèi)應(yīng)用、網(wǎng)站、客戶端等應(yīng)用中。Widget通過API將兩個(gè)網(wǎng)站或平臺(tái)和應(yīng)用聯(lián)系起來,打破了網(wǎng)站間的圍墻,使網(wǎng)站不再只是通過超鏈接的簡單連接,便可以實(shí)現(xiàn)不同網(wǎng)站之間用戶和數(shù)據(jù)的融合。Widget主體框架結(jié)構(gòu)可以分為服務(wù)層、視圖層、應(yīng)用層(如圖3所示),其中服務(wù)層即等待為其他服務(wù)和用戶提供已有的功能;視圖層,即相應(yīng)的.js和.css文件,實(shí)現(xiàn)從服務(wù)層獲取數(shù)據(jù)并以預(yù)先設(shè)計(jì)好的結(jié)構(gòu)展示;應(yīng)用層即嵌入JavaScript的終端網(wǎng)站。
圖3 Widget體系結(jié)構(gòu)
(1)開發(fā)實(shí)現(xiàn)方式
學(xué)位論文Widget API可以看作一種定義好界面的插件,用戶只需要在頁面上嵌入圖書館提供的JavaScript,便可以在自己的網(wǎng)站上混搭學(xué)位論文元數(shù)據(jù)信息,實(shí)現(xiàn)學(xué)位論文元數(shù)據(jù)和其網(wǎng)站的融合,并自主進(jìn)行學(xué)位論文在自身頁面上的展示和重新排版。
①Widget服務(wù)層
用ASP編寫學(xué)位論文數(shù)據(jù)庫查詢服務(wù)器端程序Widget. asp,根據(jù)不同的參數(shù)查詢學(xué)位論文數(shù)據(jù)庫,并將查詢結(jié)果按照字段存入數(shù)組中返回給調(diào)用方。
采用jQuery技術(shù)實(shí)現(xiàn)學(xué)位論文客戶端數(shù)據(jù)調(diào)用和重現(xiàn),jQuery語法設(shè)計(jì)可以使開發(fā)更加便捷,更方便地實(shí)現(xiàn)選擇DOM元素、事件處理等功能。采用jQuery技術(shù)編寫theses.js供客戶端調(diào)用服務(wù)器端程序,返回論文信息。
(show);});
(2)安全控制機(jī)制
Widget應(yīng)用包由大量的JavaScript腳本、HTML文件以及CSS文件組成,源碼對用戶幾乎透明,因此需要防止用戶對Widget應(yīng)用文件的非法篡改和非法調(diào)用。Widget分為桌面Widget和網(wǎng)頁Widget,桌面Widget的安全控制機(jī)制有很多[6],如數(shù)字簽名,訪問策略控制,采用獨(dú)立分發(fā)機(jī)制,網(wǎng)頁Widget方式控制機(jī)制較少,且安全性較弱,需要通過瀏覽器的安全機(jī)制實(shí)現(xiàn),或者在分發(fā)中采取人為控制措施。某大學(xué)學(xué)位論文項(xiàng)目開發(fā)的Widget屬于網(wǎng)頁Widget,我們在Widget應(yīng)用包首次分發(fā)中采用人為控制方式,確保首次分發(fā)人為可信用戶,以此保證Widget應(yīng)用包分發(fā)給合法用戶;對Widget應(yīng)用文件進(jìn)行加密打包,加密密鑰和加密后的Widget包采用不同的分發(fā)途徑信息分發(fā),以保證用戶不進(jìn)行非法的二次分發(fā),從而確保學(xué)位論文數(shù)據(jù)被合法者使用。
(3)調(diào)用方式
應(yīng)用層對學(xué)位論文Widget API的調(diào)用過程相對簡單,調(diào)用者只需要在自己的網(wǎng)站上嵌入相關(guān)代碼,即可以實(shí)現(xiàn)在自己的網(wǎng)站上顯示學(xué)位論文相關(guān)元數(shù)據(jù),具體過程如下。
①將該Widget所需的theses.js、css文件引入到需嵌入Widget的頁面:
<link rel="stylesheet"type="text/css"href="theses.css"/>
<script type="text/javascript"src="theses.js"></script>
由于該Widget使用了JQuery庫,因此需要同時(shí)將其引入:<script type="text/javascript"src="jquery-1.7.2.min.js"></ script>
②在需嵌入Widget頁面中希望呈現(xiàn)論文信息的位置引入以下HTML元素:
<div id="theses">學(xué)位論文:<a id="thesesLnk"href= "#type;keyword">歷年碩博士論文</a></div>
③通過“②”中引入元素<a>的href屬性值來配置查詢類型,其中:type為檢索途徑,keyword為檢索詞,兩者以“;”隔開,可用的檢索途徑以“檢索參數(shù)表”文檔方式提供給調(diào)用方。
兩種方式都打破了系統(tǒng)固有的封閉性,在確保數(shù)據(jù)能夠被合法利用的同時(shí),解決了平臺(tái)異構(gòu)性和開發(fā)語言差異性,使系統(tǒng)之間的內(nèi)容關(guān)聯(lián)性更強(qiáng),增強(qiáng)了數(shù)據(jù)嵌入式服務(wù)呈現(xiàn)的一致性,提升了用戶體驗(yàn),減輕了調(diào)用方的數(shù)據(jù)維護(hù)工作強(qiáng)度,拓展了圖書館特色數(shù)據(jù)庫資源的服務(wù)渠道。兩種技術(shù)在實(shí)現(xiàn)方式的難易程度、安全認(rèn)證的靈活性以及適應(yīng)平臺(tái)等方面各有千秋(如表1所示),圖書館可以根據(jù)不同特色數(shù)據(jù)庫的特點(diǎn)靈活選擇。
表1 Web Service API方式與Widget API方式比較
目前,某大學(xué)圖書館通過兩種API技術(shù)在學(xué)位論文數(shù)據(jù)庫領(lǐng)域的實(shí)踐收到了良好的效果,學(xué)位論文的服務(wù)價(jià)值得到了很好的拓展,實(shí)現(xiàn)了如下應(yīng)用:
①將學(xué)位論文元數(shù)據(jù)推送到研究生院門戶網(wǎng)站的博碩士招生專業(yè)目錄查詢欄目。研究生院門戶通過對數(shù)據(jù)進(jìn)行重新組合描述,使之混搭[7]在自己的網(wǎng)站上,實(shí)現(xiàn)與本地?cái)?shù)據(jù)的無縫銜接,拓展了學(xué)位論文的社會(huì)價(jià)值,社會(huì)考生可以通過在研究生院網(wǎng)站上查詢不同專業(yè)的學(xué)位論文數(shù)量、選題、研究方向、摘要、評價(jià)等信息,為學(xué)校及專業(yè)興趣的選擇提供參考,增強(qiáng)了考生報(bào)考的針對性。
②將學(xué)位論文元數(shù)據(jù)推送到學(xué)校門戶網(wǎng)站的“教師名錄”欄目。實(shí)現(xiàn)教師的歷年指導(dǎo)學(xué)位論文信息可以動(dòng)態(tài)更新,多渠道展示了教師教學(xué)科研成果,從而增強(qiáng)了大學(xué)產(chǎn)學(xué)研合作機(jī)會(huì)。
特色數(shù)據(jù)庫已經(jīng)成為大學(xué)圖書館的一大優(yōu)勢資源,圖書館應(yīng)充分利用自身的特色資源,以更加開放的心態(tài)展現(xiàn)自身優(yōu)勢資源,以API技術(shù)為支撐,以內(nèi)容服務(wù)為紐帶,提供開放接口,方便圖書館外其他平臺(tái)可以無縫地整合圖書館資源內(nèi)容。圖書館可以根據(jù)特色數(shù)據(jù)庫自身特點(diǎn),采用以上兩種技術(shù)框架開發(fā)相應(yīng)接口,拓展特色資源的服務(wù)渠道和價(jià)值,使特色館藏資源得到充分挖掘和利用,增強(qiáng)圖書館的吸引力,以全新的方式迎接互聯(lián)網(wǎng)的全開放時(shí)代,在洶涌的信息潮流中突顯圖書館的獨(dú)特價(jià)值。
[1]李書寧,賈西蘭.國內(nèi)外圖書館行業(yè)相關(guān)OpenAPI發(fā)展現(xiàn)狀調(diào)查及分析[J].圖書情報(bào)工作,2012(7):11-15.
[2]賈西蘭,郭建峰.圖書館行業(yè)OpenAPI利用的權(quán)限控制[J].圖書情報(bào)工作,2012(7):21-25.
[3]Windows Communication Foundation[EB/OL].[2012].http:// msdn.microsoft.com/en-us/library/ms731082.aspx.
[4]X509-Wikipedia,the free encyclopedia[EB/OL].[2012].http: //en.wikipedia.org/wiki/X.509.
[5]李慧云,陸剛,張凌.Widget安全技術(shù)研究[J].廣東通信技術(shù),2009(11):9-12.
[6]Nicole C.Engard.Library Mashups:Exploring New Ways to Deliver Library Data[M].Information Today,Inc.,2009.
趙增和男,1973年生。本科學(xué)歷,館員。研究方向:信息資源建設(shè)與服務(wù)研究;信息檢索與咨詢研究;信息資源與知識(shí)產(chǎn)權(quán)管理;數(shù)字圖書館技術(shù)與管理。
G253
2014-05-12;責(zé)編:楊新寬。)