基于SOA的图书馆开放数据服务平台设计与实现
2013-12-03滑海
滑 海
(华北科技学院图书馆,北京 101601)
1 引言
随着图书馆服务的不断深化,许多第三方应用程序想通过集成图书馆的馆藏数据来丰富自己的功能,同时图书馆也需要通过这些第三方应用程序来扩充自己的服务方式。过去,绝大部分图书馆仅通过OPAC 向用户提供馆藏数据的查询服务。如果第三方应用程序需要使用馆藏数据,一种方式是请求图书馆为其开放数据库使用权限来获得,另一种方式是通过解析OPAC 查询的结果页面获得。第一种方式可能会为数据安全带来隐患,图书馆往往不愿意为第三方应用程序开放数据库使用权限;第二种方式实现较为困难且OPAC 查询的结果页面的微小变动都需要重新解析,维护成本较高。
SOA(Service-Oriented Architecture,面向服务的体系结构)作为最新的分布式计算技术,可以将图书馆的馆藏数据通过网络以服务的方式公开,这些服务独立于具体的编程语言、实现方式和运行平台,第三方应用程序可以使用各种计算平台对其进行动态查找、订阅和访问。SOA 作为一种体系结构,不依赖某个特定的技术和平台来实现,但就现阶段而言,SOA 实现普遍采用WEB 服务(WEB Service)。本文研究了基于SOA 架构通过WEB 服务公开图书馆馆藏数据的开放数据服务平台的实现方法。
2 以WEB 服务实现的SOA 体系结构介绍
SOA 是一种面向服务的体系结构,它可以根据需求通过网络对松耦合、粗粒度的应用组件进行分布式部署、组合和使用。SOA 本质上是服务的集合,W3C 将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化。”SOA 中的服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接[1]。
SOA 作为一种面向服务的体系结构,其实现不依赖于具体的编程语言、实现方式和运行平台。但就现阶段而言,WEB 服务的特性十分适合实现SOA体系结构。
WEB 服务是可通过WEB 描述、发布、定位和调用的模块化应用,与之相关的技术是基于XML(Extensible Markup Language,扩展标记语言)、SOAP(Simple Object Access Protocol,简单对象访问协议)、WSDL(Web Service Description Language,网络服务描述语言)、UDDI(Universal Description Discovery and Integration,通用描述、发现与集成服务)等一系列开放的标准,其最大的特点是允许由不同语言开发的应用程序在不同的平台上以标准的协议进行通信。WEB 服务作为一种基于开放标准的新型分布式应用组件,一方面为构造松耦合应用提供支持,另一方面由于服务在满足用户需求方面具有优势,使得用户参与软件构造只需组合服务而不必重写代码[2]。WEB 服务使用标准的XML 来展现服务。服务是高内聚、低耦合的,可以通过WEB 的形式被调用和访问。从简单的请求到复杂的业务过程都可以被部署为WEB 服务。一旦WEB 服务被部署,就能被其他的应用程序或WEB 服务发现和调用而无需知道服务的内部实现细节。从外部使用者的角度看,WEB服务是一种部署在平台上的对象组件,它具备完好的封装性、松散耦合、使用标准协议规范、高度可集成能力等特征。
3 图书馆开放数据服务平台的设计
图书馆开放数据服务平台(以下简称平台)基于SOA 体系结构,通过网络以WEB 服务的方式公开查询馆藏数据的相关服务。整个平台从逻辑上分为四层,从上到下依次为用户层、业务层、服务层、数据层。平台架构如图1 所示。
图1 图书馆开放数据服务平台架构
用户层封装展现馆藏数据的所有逻辑。业务层接受用户层请求,通过服务层提供的接口与数据层进行交互。业务层封装实际业务逻辑。服务层是对服务的实现,是整个平台的核心,为业务层调用服务提供标准的接口。服务层从业务层接受用户层的请求,并根据请求将所需的服务返回给业务层调用。数据层向服务层提供与数据库的交互,以供业务层调用。数据层包括数据访问层和数据库两部分。
4 图书馆开放数据服务平台的实现
图书馆开放数据服务平台(以下简称平台)主要提供查询馆藏数据的相关服务,所以用户层和业务层由第三方应用程序实现。以下以华北科技学院图书馆为例介绍服务层和数据层的实现。
4.1 数据层的实现
华北科技学院图书馆集成管理系统采用Gdlis-Net,数据库为Oracle 10g。平台在WINDOWS SERVER 2003 系 统 下 基 于. NET 框 架 实 现。. NET框架本身提供用于访问Oracle 数据库的ADO. NET数据访问接口,所以平台的数据访问层在引用System.Data.OracleClient 程序集后,设置连接字符串即可访问Oracle 数据库中的馆藏数据。连接字符串的设置如下:
4.2 服务层的实现
服务层通过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 发布后,第三方应用程序就可以通过该WEB 服务的URL 调用该服务。上例中WEB 服务的测试页面如图2 所示:
图2 WEB 服务的测试页面
5 应用举例
华北科技学院图书馆在2012年10月搭建了基于SOA 的图书馆开放数据服务平台,通过网络以WEB 服务的方式将查询馆藏数据的相关服务对外开放。开放的查询馆藏数据的相关服务包括馆藏书目库查询服务、馆藏典藏库查询服务、读者库查询服务、流通库查询服务等。同期,学院正在建设校园网门户,需要集成图书馆的读者库和流通库。通过平台相关服务的调用,非常容易地实现了数据的集成。校园网门户调用平台相关服务后的效果如图3 所示:
图3 校园网门户调用平台相关服务后的效果
6 总结
本文研究了基于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]胡海涛,李刚,韩燕波.一种面向业务用户的大粒度服务组合方法[J]. 计算机学报,2005(4):694-703.
[3]ConnectionStrings. Connection strings forOracle[EB/OL].[2013-1-26]. http://www. connectionstrings.com/oracle.
[4](美)诺思拉普.NET Framework 应用程序开发(MCTS 教程)[M]. 北京:清华大学出版社,2012.