论文部分内容阅读
[摘 要]本文主要介绍利用.net平台和C#语言,基于Web服务技术,实现统一检索系统的方法。基于Web服务的统一检索系统实现简单,时空性能好,可扩展性强,能兼顾各数据源的特点实现全局优化。
[关键词]统一检索;Web服务;数字图书馆
DOI:10.3969/j.issn.1008-0821.2010.07.028
[中图分类号]G250.76 [文献标识码]B [文章编号]1008-0821(2010)07-0099-04
Implementation of Digital Library Unified SearchLi Weifeng
(Library,Jiangsu Teachers University of Technology,Changzhou 213001,China)
[Abstract]This article described a design for unified search system based on Web service and an implementation based on.net and c#.Based on this design,unified search system could be implemented easily with good spatio-temporal performance.
[Keywords]unified search;web service;digital library
数字图书馆的数字资源越来越丰富,各数字资源的检索相对独立,使得检索相对来说越来越复杂,如何屏蔽各数字资源平台,系统环境,内部数据结构等方面的差异,对统一的数据模式进行描述,进行无缝连接,进行统一检索,是数字图书馆发展中需要解决的一个重要问题。
本文通过Web服务技术把数字图书馆各个数字资源进行包装,并发布相应的Web服务;用户在统一检索界面发布检索请求后,将用户请求分析后分解成功能子查询,并包装为SOAP消息,调用相应的Web服务;Web服务执行具体查询任务,并返回结果;查询结果集成器分析查询得到的各个XML文档并组合成统一的查询结果,用户界面把最终结果展示给用户。
1 统一检索系统体系结构
统一检索系统采用B/S架构实施,能够灵活集成Web服务。用户可以在一个统一的查询界面输入查询请求,得到集成数据源的信息,返回结果也在同一界面上显示。
利用层次结构模型来描述统一检索体系结构,主要包括客户界面层、中间层、服务层和数据层4个层次,如图1所示。图1 统一检索体系结构2 .NET中服务层Web服务的实现
我们图书馆中目前本地资源主要有汇文图书数据库(ORACLE数据库),超星数字图书馆(SQL SERVER数据库)、书生之家(SQL SERVER数据库)和自建数据库(SQL SERVER数据库)等。下面以工艺美术自建数据库的Web服务实现为例进行说明。
2.1 .NET中工艺美术自建数据库Web服务的创建
下面简要介绍在Microsoft的Visual Studio.net 2005的平台下自建数据库建立Web服务的步骤:
在起始页创建网站中选择ASP.NET Web服务,工具自动产生默认的Web服务,名为Service,右方的解决方案资源管理器中包括两个文件夹:AppCode,AppData;两个文件:Service.asmx和Service.cs。
在自建工艺美术数据库的Web服务,Service.cs包含的关键代码如下:
(1)添加引用
using System.Data;
using System.Data.SqlClient;
(2)更改命名空间
[WebService(Namespace=″http:∥gymszyk.jstu.edu.cn/″)]
(3)编写用户调用方法,提供用户服务功能
例如查询工艺美术资源库中名称是变量title的Web服务功能代码如下:
[WebMethod]
public System.Data.DataSet GetTitleResults(string title)
{
∥建立查询字符串和数据库连接
string strQuery=″select distinct*from gyp where mingcheng like’%″+title+″%’″;
SqlConnection myConnection=new SqlConnection(″Server=192.168.24.28;database=gymszyk;User ID=sa″);
∥执行查询
SqlDataAdapter myCommand=new SqlDataAdapter(strQuery,myConnection);
∥定义DataSet对象,并将结果存入DataSet对象中
System.Data.DataSet ds=new System.Data.DataSet();
myCommand.Fill(ds,″gyp″);
∥返回结果DataSet对象
return ds;
}
在调试过程中,可以通过CTRL+F5生成服务,进入服务测试界面,查看结果是否符合要求。
2 .NET中自建数据库Web Service的部署
ASP.NET Web服务是由作为所谓的IIS虚拟应用程序运行的资源集合组成的。在使用VS.NET创建Web服务项目时,可以自动完成这种虚拟应用程序的配置。IIS的虚拟目录成为ASP.NET应用程序很好的容器。因此只需要在IIS上新建一个应用程序目录,并包括我们创建Web服务时的目录,就可以通过IIS来引用这个Web服务。下面把工艺美术资源数据库的Web服务部署在IIS上,具体步骤如下:
(1)在Internet Services Manager管理单元中新建一个虚拟目录,别名gymszyk,指定对应的目录为Web服务开发的目录,在设置访问权限时,把“执行”权限打勾,完成后则该虚拟目录就被配置成为一个IIS虚拟应用程序。
(2)在新建的虚拟目录根目录下手工添加bin目录。因为bin目录是.NET查找已编程序集的第一个位置,新建这个目录就是为了存放Web服务编译产生的DLL文件。
(3)利用CSC命令编译源代码。
例如在VS 2005命令提示中,可以在源代码目录中执行以下命令进行源代码编译:
Csc/out:binService.dll/target:library/r:System.Web.Services.dll Service.cs
3 .NET中中间层统一检索网站的实现
在Microsoft的Visual Studio.net 2005的平台下网站建立步骤如下:
在起始页创建网站中选择ASP.NET网站,目录位置定为我们新建的存入网站内容的目录d: yjs。工具将自动产生AppCode目录和Default.aspx、Default.aspx.cx和Web.Config文件。界面设计和功能实现设计主要都会在这3个文件中完成。
3.1 .NET中网站界面的设计
网站界面设计即用户界面,它是系统的用户接口部分,是用户与系统交互信息的窗口,主要功能是向用户展示与系统功能有关的操作和服务,并根据用户操作请求显示操作结果,因此,一般情况下对客户端的设计要求都是:简单直观,智能方便。根据这个原则设计界面。
3.2 .NET中网站功能的实现
3.2.1 .NET中Web服务的访问
.NET中使用Web服务模式采用了客户代理,这些客户代理是一些.NET类型,为客户封装了向Web服务发出SOAP调用的过程。特定服务的代理类通常是从它的WSDL文档创建的。一旦创建了这个代理类,你需要做的就是在项目中引用它,就像使用其他任何程序集或COM对象一样。然后,对Web服务的所有调用都将通过代理对象的一个实例进行处理,这个实例实现了与服务器SOAP的对话。工艺美术资源数据库Web服务代理的创建步骤如下:
(1)从统一检索站点解决方案内查看,在菜单“网站”中选择“添加Web引用”。
(2)查找工艺美术资源数据库Web服务后,选中,设Web引用名Gymszyk,单击添加引用。平台将自动生成了文件目录AppWebReferences,为每个服务增加一个目录和扩展名为disco,discomap,wsdl的3个文件。
添加了代理之后,只要在代码中添加引用,就能方便地访问Web服务里面的服务了。
访问工艺美术资源数据库Web服务的关键代码如下:
(1)添加引用
using Gymszyk;∥Gymszyk是Web服务引用名。
(2)调用代码
System.Data.DataSet ds;
Service gy=new Service();
ds=gy.GetCreatorResults(Scontent.Text);
GridView1.DataSource=ds;
3.2.2 检索的分解实现
分解算法如图2:
图2 查询分解流程
程序实现流程基本如下:
If (GYCheck.Checked)∥如果工艺美术资源数据库选中
{
If(SType.SelectedIndex==0)∥如果选中标题
? {
∥访问工艺美术资源数据库Web服务中按名称查询功能
}
Else If(SType.SelectedIndex==1)∥如果选中作者
{
∥访问工艺美术资源数据库Web服务中按作者查询功能
}
}
If (HWCheck.Checked)
{
If(SType.SelectedIndex==0)∥如果选中标题
? {
?
∥访问汇文图书数据库Web服务中按名称查询功能
?
}
Else If(SType.SelectedIndex==1)∥如果选中作者
?
{
?
∥访问汇文图书数据库Web服务中按作者查询功能
?
}
}
If(CXCheck.Checked)
{
?
If(SType.SelectedIndex==0)∥如果选中标题
?
{
?
∥访问超星数据库Web服务中按书名查询功能
?
}
?
Else If(SType.SelectedIndex==1)∥如果选中作者
?
{
?
∥访问超星数据库Web服务中按作者查询功能
?
}
}
3.2.3 结果融合和显示
结果融合和显示的实现流程如图3所示。
开始↓根据制订的元数据标准建立一个类型化DataSet↓根据分解算法得到查询结果后,依次将结果合并入类型化DataSet↓对类型化DataSet排序显示↓结束图3 结果副合和显示流程
(1)类型化DataSet的建立
首先参照DC制订的全局元数据是:
题名(Ttitle):存放资源名称。
创建者(Tcreator):对创造资源知识内容负主要责任的个人或机构。
日期(Tdate):指与创建或使资源成为可利用状态相关的日期。
类型(Ttype):资源的类别。
来源(Tsource):资源的出处,当前资源可以从来源资源中获取详细资源。
来自的数据库(Tcontributor):资源来自何数据库。
根据这个元数据标准建立个具体预定结构的DataSet。方法如下:
第一步,创建类型化表的模式文档tDataSet.xsd。
第二步,利用模式文档生成类型化的DataSet。
在.NET环境DOS命令行如下命令:
Xsd tDataSet.xsd/d/l:cs
运行后将生成一个文件tDataSet.cs,包括一个类型化的tDataSet类,我们就可以像其他任何DataSet一样实例化和使用这个类了。
(2)结果融合和显示实现
结果融合算法思路如下:
设Web服务WSi返回结果Ri,UR存放结果集。
(1)取出Web服务WSi返回结果集Ri;
(2)合并、去重表Ri,得到结果集元数据表UR;
(3)对结果集元数据表UR进行排序,按时间进行降序排;
(4)返回结果显示。
实现具体关键步骤如下:
第一步,定义一个公共的类型化DataSet变量。
tDataSet shareDs=new tDataSet();
第二步,将Web调用结果导入DataSet变量。
∥ds是Web服务返回的DataSet结果集
for(int i=0;i {
? DataRow tempData=shareDs.Tables[0].NewRow();
∥把ds中的数据读出一行
? tempData[″Ttitle″]=ds.Tables[0].Rows[i][″mingcheng″].ToString();
? tempData[″Tcreator″]=ds.Tables[0].Rows[i][″zuoze″].ToString();
? tempData[″Ttype″]=ds.Tables[0].Rows[i][″type″].ToString();
? tempData[″Tcontributor″]=″工艺美术资源数据库″;
? tempData[″Tdate″]=ds.Tables[0].Rows[i][″niandai″].ToString();
? tempData[″Tsource″]=ds.Tables[0].Rows[i][″identifier″].ToString();
? ∥把ds中数据读出一行加入到公共DataSet中
? shareDs.Tables[0].Rows.Add(tempData);
}
第三步,显示排序结果集。
排序显示关键代码:
shareDs.Tables[0].DefaultView.Sort=″Tdate desc″;∥按时间排序
GridView1.DataSource=shareDs;∥绑定到数据控件显示
GridView1.DataBind();
……
4 结束语
本文结合我馆本地数据库,基于Web服务技术,利用.NET和C#工具,进行了系统设计与开发。通过Web服务将各个异构数据库进行包装处理,并在ASP.NET平台将Web服务进行融合,以统一的形式为用户提供检索的服务,为资源库的用户提供了一种更好的统一检索服务 。集成更多数据源检索接口,对结果融合算法进行优化,是今后工作的重点。
参考文献
[1]韩炳黎.数字图书馆统一检索研究及开发[J].现代情报,2006,(3):25-27.
[2]周慧贞,廖先军.军校图书馆统一检索系统的研究与设计[J].现代图书情报技术,2006,(10):34-37.
[3]李安渝.Web Services技术与实现[M].北京:国防工业出版社,2003.1.
[4]柴晓路.web服务架构与开放互操作技术[M].北京:清华大学出版社,2002.
[5]Christian Nagel,Bill Evjen,Jay Glynn.C#高级编程.2006.
[关键词]统一检索;Web服务;数字图书馆
DOI:10.3969/j.issn.1008-0821.2010.07.028
[中图分类号]G250.76 [文献标识码]B [文章编号]1008-0821(2010)07-0099-04
Implementation of Digital Library Unified SearchLi Weifeng
(Library,Jiangsu Teachers University of Technology,Changzhou 213001,China)
[Abstract]This article described a design for unified search system based on Web service and an implementation based on.net and c#.Based on this design,unified search system could be implemented easily with good spatio-temporal performance.
[Keywords]unified search;web service;digital library
数字图书馆的数字资源越来越丰富,各数字资源的检索相对独立,使得检索相对来说越来越复杂,如何屏蔽各数字资源平台,系统环境,内部数据结构等方面的差异,对统一的数据模式进行描述,进行无缝连接,进行统一检索,是数字图书馆发展中需要解决的一个重要问题。
本文通过Web服务技术把数字图书馆各个数字资源进行包装,并发布相应的Web服务;用户在统一检索界面发布检索请求后,将用户请求分析后分解成功能子查询,并包装为SOAP消息,调用相应的Web服务;Web服务执行具体查询任务,并返回结果;查询结果集成器分析查询得到的各个XML文档并组合成统一的查询结果,用户界面把最终结果展示给用户。
1 统一检索系统体系结构
统一检索系统采用B/S架构实施,能够灵活集成Web服务。用户可以在一个统一的查询界面输入查询请求,得到集成数据源的信息,返回结果也在同一界面上显示。
利用层次结构模型来描述统一检索体系结构,主要包括客户界面层、中间层、服务层和数据层4个层次,如图1所示。图1 统一检索体系结构2 .NET中服务层Web服务的实现
我们图书馆中目前本地资源主要有汇文图书数据库(ORACLE数据库),超星数字图书馆(SQL SERVER数据库)、书生之家(SQL SERVER数据库)和自建数据库(SQL SERVER数据库)等。下面以工艺美术自建数据库的Web服务实现为例进行说明。
2.1 .NET中工艺美术自建数据库Web服务的创建
下面简要介绍在Microsoft的Visual Studio.net 2005的平台下自建数据库建立Web服务的步骤:
在起始页创建网站中选择ASP.NET Web服务,工具自动产生默认的Web服务,名为Service,右方的解决方案资源管理器中包括两个文件夹:AppCode,AppData;两个文件:Service.asmx和Service.cs。
在自建工艺美术数据库的Web服务,Service.cs包含的关键代码如下:
(1)添加引用
using System.Data;
using System.Data.SqlClient;
(2)更改命名空间
[WebService(Namespace=″http:∥gymszyk.jstu.edu.cn/″)]
(3)编写用户调用方法,提供用户服务功能
例如查询工艺美术资源库中名称是变量title的Web服务功能代码如下:
[WebMethod]
public System.Data.DataSet GetTitleResults(string title)
{
∥建立查询字符串和数据库连接
string strQuery=″select distinct*from gyp where mingcheng like’%″+title+″%’″;
SqlConnection myConnection=new SqlConnection(″Server=192.168.24.28;database=gymszyk;User ID=sa″);
∥执行查询
SqlDataAdapter myCommand=new SqlDataAdapter(strQuery,myConnection);
∥定义DataSet对象,并将结果存入DataSet对象中
System.Data.DataSet ds=new System.Data.DataSet();
myCommand.Fill(ds,″gyp″);
∥返回结果DataSet对象
return ds;
}
在调试过程中,可以通过CTRL+F5生成服务,进入服务测试界面,查看结果是否符合要求。
2 .NET中自建数据库Web Service的部署
ASP.NET Web服务是由作为所谓的IIS虚拟应用程序运行的资源集合组成的。在使用VS.NET创建Web服务项目时,可以自动完成这种虚拟应用程序的配置。IIS的虚拟目录成为ASP.NET应用程序很好的容器。因此只需要在IIS上新建一个应用程序目录,并包括我们创建Web服务时的目录,就可以通过IIS来引用这个Web服务。下面把工艺美术资源数据库的Web服务部署在IIS上,具体步骤如下:
(1)在Internet Services Manager管理单元中新建一个虚拟目录,别名gymszyk,指定对应的目录为Web服务开发的目录,在设置访问权限时,把“执行”权限打勾,完成后则该虚拟目录就被配置成为一个IIS虚拟应用程序。
(2)在新建的虚拟目录根目录下手工添加bin目录。因为bin目录是.NET查找已编程序集的第一个位置,新建这个目录就是为了存放Web服务编译产生的DLL文件。
(3)利用CSC命令编译源代码。
例如在VS 2005命令提示中,可以在源代码目录中执行以下命令进行源代码编译:
Csc/out:binService.dll/target:library/r:System.Web.Services.dll Service.cs
3 .NET中中间层统一检索网站的实现
在Microsoft的Visual Studio.net 2005的平台下网站建立步骤如下:
在起始页创建网站中选择ASP.NET网站,目录位置定为我们新建的存入网站内容的目录d: yjs。工具将自动产生AppCode目录和Default.aspx、Default.aspx.cx和Web.Config文件。界面设计和功能实现设计主要都会在这3个文件中完成。
3.1 .NET中网站界面的设计
网站界面设计即用户界面,它是系统的用户接口部分,是用户与系统交互信息的窗口,主要功能是向用户展示与系统功能有关的操作和服务,并根据用户操作请求显示操作结果,因此,一般情况下对客户端的设计要求都是:简单直观,智能方便。根据这个原则设计界面。
3.2 .NET中网站功能的实现
3.2.1 .NET中Web服务的访问
.NET中使用Web服务模式采用了客户代理,这些客户代理是一些.NET类型,为客户封装了向Web服务发出SOAP调用的过程。特定服务的代理类通常是从它的WSDL文档创建的。一旦创建了这个代理类,你需要做的就是在项目中引用它,就像使用其他任何程序集或COM对象一样。然后,对Web服务的所有调用都将通过代理对象的一个实例进行处理,这个实例实现了与服务器SOAP的对话。工艺美术资源数据库Web服务代理的创建步骤如下:
(1)从统一检索站点解决方案内查看,在菜单“网站”中选择“添加Web引用”。
(2)查找工艺美术资源数据库Web服务后,选中,设Web引用名Gymszyk,单击添加引用。平台将自动生成了文件目录AppWebReferences,为每个服务增加一个目录和扩展名为disco,discomap,wsdl的3个文件。
添加了代理之后,只要在代码中添加引用,就能方便地访问Web服务里面的服务了。
访问工艺美术资源数据库Web服务的关键代码如下:
(1)添加引用
using Gymszyk;∥Gymszyk是Web服务引用名。
(2)调用代码
System.Data.DataSet ds;
Service gy=new Service();
ds=gy.GetCreatorResults(Scontent.Text);
GridView1.DataSource=ds;
3.2.2 检索的分解实现
分解算法如图2:
图2 查询分解流程
程序实现流程基本如下:
If (GYCheck.Checked)∥如果工艺美术资源数据库选中
{
If(SType.SelectedIndex==0)∥如果选中标题
? {
∥访问工艺美术资源数据库Web服务中按名称查询功能
}
Else If(SType.SelectedIndex==1)∥如果选中作者
{
∥访问工艺美术资源数据库Web服务中按作者查询功能
}
}
If (HWCheck.Checked)
{
If(SType.SelectedIndex==0)∥如果选中标题
? {
?
∥访问汇文图书数据库Web服务中按名称查询功能
?
}
Else If(SType.SelectedIndex==1)∥如果选中作者
?
{
?
∥访问汇文图书数据库Web服务中按作者查询功能
?
}
}
If(CXCheck.Checked)
{
?
If(SType.SelectedIndex==0)∥如果选中标题
?
{
?
∥访问超星数据库Web服务中按书名查询功能
?
}
?
Else If(SType.SelectedIndex==1)∥如果选中作者
?
{
?
∥访问超星数据库Web服务中按作者查询功能
?
}
}
3.2.3 结果融合和显示
结果融合和显示的实现流程如图3所示。
开始↓根据制订的元数据标准建立一个类型化DataSet↓根据分解算法得到查询结果后,依次将结果合并入类型化DataSet↓对类型化DataSet排序显示↓结束图3 结果副合和显示流程
(1)类型化DataSet的建立
首先参照DC制订的全局元数据是:
题名(Ttitle):存放资源名称。
创建者(Tcreator):对创造资源知识内容负主要责任的个人或机构。
日期(Tdate):指与创建或使资源成为可利用状态相关的日期。
类型(Ttype):资源的类别。
来源(Tsource):资源的出处,当前资源可以从来源资源中获取详细资源。
来自的数据库(Tcontributor):资源来自何数据库。
根据这个元数据标准建立个具体预定结构的DataSet。方法如下:
第一步,创建类型化表的模式文档tDataSet.xsd。
第二步,利用模式文档生成类型化的DataSet。
在.NET环境DOS命令行如下命令:
Xsd tDataSet.xsd/d/l:cs
运行后将生成一个文件tDataSet.cs,包括一个类型化的tDataSet类,我们就可以像其他任何DataSet一样实例化和使用这个类了。
(2)结果融合和显示实现
结果融合算法思路如下:
设Web服务WSi返回结果Ri,UR存放结果集。
(1)取出Web服务WSi返回结果集Ri;
(2)合并、去重表Ri,得到结果集元数据表UR;
(3)对结果集元数据表UR进行排序,按时间进行降序排;
(4)返回结果显示。
实现具体关键步骤如下:
第一步,定义一个公共的类型化DataSet变量。
tDataSet shareDs=new tDataSet();
第二步,将Web调用结果导入DataSet变量。
∥ds是Web服务返回的DataSet结果集
for(int i=0;i
? DataRow tempData=shareDs.Tables[0].NewRow();
∥把ds中的数据读出一行
? tempData[″Ttitle″]=ds.Tables[0].Rows[i][″mingcheng″].ToString();
? tempData[″Tcreator″]=ds.Tables[0].Rows[i][″zuoze″].ToString();
? tempData[″Ttype″]=ds.Tables[0].Rows[i][″type″].ToString();
? tempData[″Tcontributor″]=″工艺美术资源数据库″;
? tempData[″Tdate″]=ds.Tables[0].Rows[i][″niandai″].ToString();
? tempData[″Tsource″]=ds.Tables[0].Rows[i][″identifier″].ToString();
? ∥把ds中数据读出一行加入到公共DataSet中
? shareDs.Tables[0].Rows.Add(tempData);
}
第三步,显示排序结果集。
排序显示关键代码:
shareDs.Tables[0].DefaultView.Sort=″Tdate desc″;∥按时间排序
GridView1.DataSource=shareDs;∥绑定到数据控件显示
GridView1.DataBind();
……
4 结束语
本文结合我馆本地数据库,基于Web服务技术,利用.NET和C#工具,进行了系统设计与开发。通过Web服务将各个异构数据库进行包装处理,并在ASP.NET平台将Web服务进行融合,以统一的形式为用户提供检索的服务,为资源库的用户提供了一种更好的统一检索服务 。集成更多数据源检索接口,对结果融合算法进行优化,是今后工作的重点。
参考文献
[1]韩炳黎.数字图书馆统一检索研究及开发[J].现代情报,2006,(3):25-27.
[2]周慧贞,廖先军.军校图书馆统一检索系统的研究与设计[J].现代图书情报技术,2006,(10):34-37.
[3]李安渝.Web Services技术与实现[M].北京:国防工业出版社,2003.1.
[4]柴晓路.web服务架构与开放互操作技术[M].北京:清华大学出版社,2002.
[5]Christian Nagel,Bill Evjen,Jay Glynn.C#高级编程.2006.