滑 海
(華北科技學院圖書館,北京 101601)
隨著圖書館服務的不斷深化,許多第三方應用程序想通過集成圖書館的館藏數據來豐富自己的功能,同時圖書館也需要通過這些第三方應用程序來擴充自己的服務方式。過去,絕大部分圖書館僅通過OPAC 向用戶提供館藏數據的查詢服務。如果第三方應用程序需要使用館藏數據,一種方式是請求圖書館為其開放數據庫使用權限來獲得,另一種方式是通過解析OPAC 查詢的結果頁面獲得。第一種方式可能會為數據安全帶來隱患,圖書館往往不愿意為第三方應用程序開放數據庫使用權限;第二種方式實現較為困難且OPAC 查詢的結果頁面的微小變動都需要重新解析,維護成本較高。
SOA(Service-Oriented Architecture,面向服務的體系結構)作為最新的分布式計算技術,可以將圖書館的館藏數據通過網絡以服務的方式公開,這些服務獨立于具體的編程語言、實現方式和運行平臺,第三方應用程序可以使用各種計算平臺對其進行動態(tài)查找、訂閱和訪問。SOA 作為一種體系結構,不依賴某個特定的技術和平臺來實現,但就現階段而言,SOA 實現普遍采用WEB 服務(WEB Service)。本文研究了基于SOA 架構通過WEB 服務公開圖書館館藏數據的開放數據服務平臺的實現方法。
SOA 是一種面向服務的體系結構,它可以根據需求通過網絡對松耦合、粗粒度的應用組件進行分布式部署、組合和使用。SOA 本質上是服務的集合,W3C 將服務定義為:“服務提供者完成一組工作,為服務使用者交付所需的最終結果。最終結果通常會使使用者的狀態(tài)發(fā)生變化,但也可能使提供者的狀態(tài)改變,或者雙方都產生變化?!盨OA 中的服務就是精確定義、封裝完善、獨立于其他服務所處環(huán)境和狀態(tài)的函數。服務間彼此通信,這種通信可能是簡單的數據傳送,也可能是兩個或更多的服務協(xié)調進行某些活動。服務間需要某些方法進行連接[1]。
SOA 作為一種面向服務的體系結構,其實現不依賴于具體的編程語言、實現方式和運行平臺。但就現階段而言,WEB 服務的特性十分適合實現SOA體系結構。
WEB 服務是可通過WEB 描述、發(fā)布、定位和調用的模塊化應用,與之相關的技術是基于XML(Extensible Markup Language,擴展標記語言)、SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)、WSDL(Web Service Description Language,網絡服務描述語言)、UDDI(Universal Description Discovery and Integration,通用描述、發(fā)現與集成服務)等一系列開放的標準,其最大的特點是允許由不同語言開發(fā)的應用程序在不同的平臺上以標準的協(xié)議進行通信。WEB 服務作為一種基于開放標準的新型分布式應用組件,一方面為構造松耦合應用提供支持,另一方面由于服務在滿足用戶需求方面具有優(yōu)勢,使得用戶參與軟件構造只需組合服務而不必重寫代碼[2]。WEB 服務使用標準的XML 來展現服務。服務是高內聚、低耦合的,可以通過WEB 的形式被調用和訪問。從簡單的請求到復雜的業(yè)務過程都可以被部署為WEB 服務。一旦WEB 服務被部署,就能被其他的應用程序或WEB 服務發(fā)現和調用而無需知道服務的內部實現細節(jié)。從外部使用者的角度看,WEB服務是一種部署在平臺上的對象組件,它具備完好的封裝性、松散耦合、使用標準協(xié)議規(guī)范、高度可集成能力等特征。
圖書館開放數據服務平臺(以下簡稱平臺)基于SOA 體系結構,通過網絡以WEB 服務的方式公開查詢館藏數據的相關服務。整個平臺從邏輯上分為四層,從上到下依次為用戶層、業(yè)務層、服務層、數據層。平臺架構如圖1 所示。
圖1 圖書館開放數據服務平臺架構
用戶層封裝展現館藏數據的所有邏輯。業(yè)務層接受用戶層請求,通過服務層提供的接口與數據層進行交互。業(yè)務層封裝實際業(yè)務邏輯。服務層是對服務的實現,是整個平臺的核心,為業(yè)務層調用服務提供標準的接口。服務層從業(yè)務層接受用戶層的請求,并根據請求將所需的服務返回給業(yè)務層調用。數據層向服務層提供與數據庫的交互,以供業(yè)務層調用。數據層包括數據訪問層和數據庫兩部分。
圖書館開放數據服務平臺(以下簡稱平臺)主要提供查詢館藏數據的相關服務,所以用戶層和業(yè)務層由第三方應用程序實現。以下以華北科技學院圖書館為例介紹服務層和數據層的實現。
華北科技學院圖書館集成管理系統(tǒng)采用Gdlis-Net,數據庫為Oracle 10g。平臺在WINDOWS SERVER 2003 系 統(tǒng) 下 基 于. NET 框 架 實 現。. NET框架本身提供用于訪問Oracle 數據庫的ADO. NET數據訪問接口,所以平臺的數據訪問層在引用System.Data.OracleClient 程序集后,設置連接字符串即可訪問Oracle 數據庫中的館藏數據。連接字符串的設置如下:
服務層通過WEB 服務對外公開查詢館藏數據的相關服務,服務層是整個平臺的核心。基于.NET 框架的WEB 服務與普通的WEB 頁面不同之處是普通的WEB 頁面繼承自System.Web.UI.Page類,而WEB 服務繼承自System.Web.Services.Web-Service 類,并且每一個對外公開的接口都被Web-Method 特性修飾,其他則基本相同[4]。以下以從館藏書目庫中獲取MARC 記錄為例,介紹WEB 服務的實現方式。
首先,從用戶層獲取用戶提交的查詢請求。用戶可提交I(ISBN)、C(索書號)、T(題名)查詢項,并可指定查詢模式E(精確)、L(模糊)。根據查詢項與查詢模式組合,構造不同的查詢請求。
然后,建立與Oracle 數據庫的連接,根據查詢請求從數據庫獲取數據,然后將數據返回給接口。以下展示了獲取館藏數據庫中MARC 記錄的部分代碼:
一旦將建立好的WEB 服務通過IIS 發(fā)布后,第三方應用程序就可以通過該WEB 服務的URL 調用該服務。上例中WEB 服務的測試頁面如圖2 所示:
圖2 WEB 服務的測試頁面
華北科技學院圖書館在2012年10月搭建了基于SOA 的圖書館開放數據服務平臺,通過網絡以WEB 服務的方式將查詢館藏數據的相關服務對外開放。開放的查詢館藏數據的相關服務包括館藏書目庫查詢服務、館藏典藏庫查詢服務、讀者庫查詢服務、流通庫查詢服務等。同期,學院正在建設校園網門戶,需要集成圖書館的讀者庫和流通庫。通過平臺相關服務的調用,非常容易地實現了數據的集成。校園網門戶調用平臺相關服務后的效果如圖3 所示:
圖3 校園網門戶調用平臺相關服務后的效果
本文研究了基于SOA 的圖書館開放數據服務平臺的設計,并介紹了其實現的關鍵技術。圖書館館藏數據開放平臺的建立,為第三方應用程序和圖書館館藏數據的集成提供了一種新方法,這既方便了需要使用館藏數據的第三方應用程序,同時也拓寬了圖書館的服務渠道,具有非常大的實用價值。
[1]Douglas K Barry. Service-oriented architecture(SOA)definition[EB/OL].[2013-1-26].http://www. service-architecture. com/web-services/articles/service-oriented_architecture_soa_definition.html.
[2]胡海濤,李剛,韓燕波.一種面向業(yè)務用戶的大粒度服務組合方法[J]. 計算機學報,2005(4):694-703.
[3]ConnectionStrings. Connection strings forOracle[EB/OL].[2013-1-26]. http://www. connectionstrings.com/oracle.
[4](美)諾思拉普.NET Framework 應用程序開發(fā)(MCTS 教程)[M]. 北京:清華大學出版社,2012.