图书馆特资源元数据API实现与比较研究以WebServiceAPI与WidgetAPI为例
赵增和
(天津市静海县图书馆,天津301600)
[摘要]介绍了特资源在当前图书馆价值取向转变中所起到的重要作用,分析了图书馆为自建特数据库元数据提供API,实现资源开放获取,拓展特资源服务渠道的迫切需求,以及资源开放过程中对知识产
权的保护,并以某大学开展的学位论文数据库拓展服务为例,介绍了两种API——基于WCF框架的Web Service API、采用jQuery开发的Widget API方式,并分析了两种不同方式的优缺点及适用环境。
[关键词]图书馆特资源API 开放共享安全控制
[分类号]G253
1 引言
随着信息服务网络化的发展以及信息开放理念的兴起,图书馆的价值取向也悄然转变,资源服务及知识传播已从原有的仅为在校师生提供检索查询转变为信息的开放互动与沟通共享,这对高校图书馆提出了全新的要求。在Web 2.0的用户参与、互动与分享以及开放图书馆理念的指导下,大学图书馆需要根据资源的特点,以更开放的心态迎接读者以及信息资源和信息服务日益泛在化的挑战。在世纪之交的十多年里,大学图书馆的数据信息量越来越庞大,它依托自身馆藏信息资源,针对用户的信息需求,对某一学科或某一专题的信息进行收集、归纳、分类、整理、存储,按照一定标准和规范将其数字化,自建了很多特数据库,并以互联网为平台,面向广大师生用户提供基于内容的服务,特数据库成为图书馆不同于互联网其他信息提供者的优势资源,能够在相关领域为读者提供“专业、精准、高速”的信息检索。在保护知识产权的前提下,图书馆针对特资源开发API供第三方调用,是充分挖掘特馆藏资源、在更大范围内被其他机构或者用户利用、拓展图书馆服务和体现资源深层价值的有效方式[1,2],
既可以为图书馆特数据库增加附加值和新的访问点,扩展特资源的使用范围和使用价值,又可以使第三方通过混搭的方式使用图书馆资源,实现图书馆服务的无处不在。
2 特资源元数据API 技术实现
图书馆特数据库种类众多,属性和软件架构各异,对于一些特数据库,图书馆想要为其添加新的功能或者开放新的接口,必须求助于供应商,或者支付一定的费用,并且有的厂商并不提供相关的服务。然而如果图书馆一旦“进入”到其架构系统,几乎所有的事情都是可能的,因此我们尝试借助相关的技术,“强行”进入原本封闭的特数据库架构系统,实现拓展特资源价值的想法。由于图书馆特数据库的平台各异及版权属性限制,在开发及开放特数据库过程中需要在保护知识产权的前提下,尽量使用通用框架,屏蔽图书馆特数据库与第三方调用者平台的异构性、开发语言的多样性,并且确保推送过程中的数据资源在可控范围内被合法、安全利用。
学位论文是高校图书馆特资源的重要组成部分,笔者以某大学图书馆学位论文数据库拓展服务为例[3],介绍两种图书馆特数据库元数据API的实现及比较——基于WCF框架开发的Web Service API 方式,以及采用jQuery 开发的Widget API 方式。某大学学位论文数据库以TPI 为平台,Kbase数据库存储数据,系统部署在图书馆本地,TPI属于早年开发的商用特资源数据库发布系统,系统开放性较差,通过上述两种技术打破学位论文数据库的固有围墙,实现学位论文元数据开放共享,拓展学位论文服务范围。
2.1 Web Service API
Web Service是一个URL资源,客户端可以通过编程方式请求得到它的服务,而无需知道所请求的服务是如何实现的,这一点与传统的分布式组件对象模型不同,其有两层含义:一是指封装成单个实体并发布到网络上的功能集合体;二是指功能集合体被调用后所提供的服务。Web Service的体系结构是基于Web服务提供者、请求者、服务管理者(注册中心)三个角和服务发布、服务发现、服务绑定三个动作构建而成,如图1所示。简单地说,Web 服务提供者即Web服务的拥有者,它等待为其他服务和用户提供已有的功能;Web服务请求者即Web服务功能的使用者,它利用SOAP消息向Web服务提供者发送请求以获得服务;Web 服务管理者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角。
(1)开发实现框架
Web Service API是用所开发的Web Service替换用户对学位论文数据库的直接获取服务,调用者通过调用所发布的URL获取学位论文元数据。在技术实现环节,采用WCF技术[4]以面向服务的方式来创建学位论文Web Service API,实现数据的推送服务。WCF最突出的特
点体现在互操作、安全可信赖以及通用性方面,并以一系列协议的定义、实现、发布为流程和框架实现。
① 定义服务协定
在应用程序中添加IService.cs接口,以为第三方开放的数据及查询方式为服务协定进行定义,公布可以对外提供服务的操作、操作返回的数据类型、需要传入的参数个数、参数类型等。如某大学研究生院要求读者能够在研究生网站上通过专业查询相关导师指导的研究生论文情况,定义服务协定如下:
[Operation Contract]//定义服务协定,专业代码为参数,返回论文数据集
webservice实现
DataSet GetDataByMajor(string majorCode)
② 实现服务协定
实现服务协定,定义一个类Service.cs以实现IService.cs接口中定义的所有服务协定,并返回相关结果。如,依照研究生院与某大学图书馆的服务协定,实现程序返回给研究生院导师所辅导论文的学生姓名、论文题目、摘要等:
// 创建数据表函数,用于存储论文元数据的各个属性值并返回:
public DataTable GetDataTable()
{
DataTable dt = new DataTable("sblw");
DataColumn dc1 = new DataColumn("作者名",Type.Get?Type("System.String "));…
dt.Columns.Add(dc1);
return dt;
}
//具体的服务协议实现,读取数据库,根据专业代码获取学位论文元数据[OperationContract]
public DataSet GetDataByMajor(string majorCode){// 详细实现,查询数据库并将结果保存在GetDataTable实例中返回
…}
③ 搭建宿主,承载服务
公开WCF服务,需要提供一个运行服务的宿主环境,以IIS+.NET framework 4.0+WCF环境为例,以IIS作为宿主来承载服务,承载于IIS 中的WCF 服务在IIS 应用程序内表示为特殊内容文件(Service.svc 文件)。.svc 文件包含WCF 特定的处理指令
(@ServiceHost),该指令允许WCF 承载基础结构激活所承载的服务,以响应传入消息。.svc 文件的最常见语法如下所示。
<%@ ServiceHost Language="C#" Debug="true" Service="Service"
CodeBehind="~/App_Code/Service.cs" %>
(2)安全控制机制
API作为一种数据传递方式,数据安全是开发过程中需要首先考虑的。在Web Service API 方式中,采用X509证书[5]作为数据安全认证控制方式,加密通过证书对(服务器客户端各一个)完成,经过X509证书加密后的输入及获取到的输出内容,均是被加密的密文,在数据传递过程中无法看到明文,能确保数据传输过程私密、安全、可靠,并且实现这样的加密操作,在调用上不会受到任何影响,只需在WCF服务以及调用的客户端进行一些文件配置等操作即可,其实现方式具有高配置型、灵活性的特点,基于X5
09证书加密的操作流程如图2所示。
通过.NET的makecert命令为WCF服务应用创建客户证书和服务端的X509证书,命令如下:
makecert -sr localmachine -ss my -n CN=127.0.0.1 -skyexchange-pe -r
此处“my”为生成的证书名字,CN后为服务器IP地址或服务器机器名称。
在授权调用控制环节,通过调用端和服务器端的证书对匹配,确保数据被合法者调用。在服务器端,将证书以私钥导出到本地硬盘、授权IIS访问服务器证书,以及将证书导入到服务器计算机的“受信任的根证书颁发机构”和“受信任人”存储区,给证书加everyone权限,并将证书颁发给合法的Web Service API调用方。调用端,将证书安装到“受信任的根证书颁发机构”中,给证书加everyone权限。最后,要确保证书的启用,使X509证书服务生效,需要在fig中加入服务器IP。如下: