文/范泽华
海量数字文献资源的出现,要求图书馆采用先进技术构建一种全新的文献信息服务环境来满足不断扩张的用户需求。如果用户对资源缺乏足够的认识,对资源的搜索系统不熟悉,且他们在使用各个系统时每次都要进行登录和认证,那么这就给用户检索和利用数字资源带来极大的不便。
华中科技大学图书馆依托丰富的电子资源,开发出统一检索平台(HUSTLIBURP,HUSTLIB-UNION RETRIEVAL PLATFORM)。
软件的开发是在DotNet框架平台上进行的。架构(Architecture)是软件设计中非常重要的一个环节。在软件开发的过程中只要确定了需求和架构,那么这个软件基本上可以定型。
架构设计是一种权衡。一个问题总是有多种解决方案,而要确定唯一的架构设计的解决方案,就意味着要在不同的矛盾体之间做出一个权衡。在设计的过程中总可以看到很多矛盾体:开放和整合、一致性和特殊化、稳定性和延展性等。任何一对矛盾体都源于对软件的不同期望。满足软件稳定运行的要求,就必然会影响对软件易于扩展的期望。如果要求软件简单明了,那么就会增加设计的复杂度。没有一个软件能够满足所有的要求,因为这些要求之间带有天生的互斥性。而评价架构设计的好坏的依据,只能是在其间做出权衡的合理性。
我们认为,良好的架构应能实现重用、透明、延展、简明、高效、安全等目标。构造三层应用程序
我们从抽象的体系结构级别开发面向对象的应用程序。它在逻辑上构造成三层服务应用程序。应用程序是基于OLTP处理模型的。硬件和网络体系结构是基于四级分布的,这要求Web服务器功能和应用程序服务器功能具有不同的物理级,并基于复杂的Web应用程序创建一个部署规划,以便将组件映射到服务器。
解决方案是使用 Microsoft.NET 技术构建的。表示层基于 ASP.NET 中内置的 Web表示框架。ASP.NET 使用内置的代码隐藏页功能来简化 Model-View-Controller 的实现。使用 ASP.NET 内置的 Page Controller 机制来实现表示逻辑。业务层中的域对象是 .NET托管对象。因为表示层和业务层部署在不同的级上,所以使用服务器激活,使对象通过.NET Remoting实现代理。最后,数据层基于Microsoft.NET Framework中的ADO.NET类来提供数据库访问。表模块和业务实体是使用ADO.NET的数据集组件构造的。数据访问组件的其余部分由.NET构建块提供。
由于在构建企业级解决方案时会涉及到大量模式,这些模式被组织成更小、更紧密相关的模式集。在浏览模式的机制方面,我们利用了关系、抽象级别、群集和视点。实际上,当用户在角色、主题范围和详细程度之间切换时,将自然而然地在这些机制之间进行了切换。
海量数字文献资源的出现,要求图书馆采用先进技术构建一种全新的文献信息服务环境来满足不断扩张的用户需求。
用户界面功能模块化
用户界面逻辑的更改往往比业务逻辑频繁,尤其是在基于Web的应用程序中。例如,可能添加新的用户界面页或者可能完全打乱现有的页面布局。毕竟,基于Web 的瘦客户端应用程序的优点之一是可以随时更改用户界面,而不必重新分发应用程序。如果将显示代码和业务逻辑组合并放在单个对象中,则每次更改用户界面时,都必须修改包含业务逻辑的对象,这很有可能引入错误,而且在对用户界面进行极小更改之后都要重新测试所有的业务逻辑。
在某些情况下,应用程序以不同的方式显示同一数据。在一些胖客户端用户界面中,常常用多个视图同时显示相同数据。如果用户在一个视图中更改了数据,则系统必须自动更新该数据的其他所有视图。
简单有效的HTML页通常要求采用一套与开发复杂业务逻辑不同的技能。用户界面活动由以下两部分组成:显示和更新。显示部分负责从数据源检索数据,并格式化数据以便进行显示。当用户基于该数据执行操作时,更新部分将控制权返回给业务逻辑,以便更新数据。
在 Web 应用程序中,单个页面请求将这两方面的工作组合在一起:与用户所选链接相关联的操作进行的处理,以及目标页面的显示。在许多情况下,目标页可能不与操作直接相关。例如,假设有一个用于显示项目列表的简单 Web 应用程序,在将项目添加到列表或从列表中删除项目之后,用户将返回主列表页,因此,应用程序必须在执行两个有很大差异的命令(添加或删除)之后显示相同页面(列表),而所有这些操作均在同一个 HTTP 请求内进行。
HUSTLIB-URP结构分析采用的是模式分析方法。模式描述能给定上下文中反复出现的问题,并基于一组指导性影响因素来建议解决方案。解决方案通常是一种简单的机制,是为了解决模式中所标示出的问题而一起工作的两个或多个类、对象、服务、进程、线程、组件或节点之间的协作。而OLTP 系统是用来管理事务处理的数据库子系统。这些子系统确保每个事务的原子性、一致性、独立性及持久性。
HUSTLIB-URP是一个典型的N层架构,其结构分为四个逻辑层。Web层
Web层为客户端提供对应用程序的访问。这一层是作为HUSTLIB-URP.sln解决方案文件中的Web项目实现的。Web层由ASP.NET Web窗体和代码隐藏文件组成。Web窗体只是使用HTML提供用户操作,而代码隐藏文件则实现各种控件的事件处理。
Web层还使用Java Script页面处理技术,实现选择数据库个数计数、内容介绍显示、流量计算等功能。
业务外观层
业务外观层为 Web 层提供处理合法用户验证、服务器选择、日期处理结果及程序异常结果显示的界面。业务外观层作为隔离层,将用户界面与各种业务功能的实现隔离。除了低级系统和支持功能之外,对数据库服务器的所有调用都是通过此程序集进行的。
业务规则层
业务规则层是作为HUSTLIB-URP解决方案文件中的商务规则项目实现的,它包含各种业务规则和逻辑的实现。业务规则完成合法数据的验证、实现各个检索数据库的接口数据传输这样的任务。
数据访问层
数据访问层为业务规则层提供数据服务。这一层是作为HUSTLIB-URP解决方案文件中的检索项目来实现的。
业务外观层和业务规则层比较有特点,在Web应用的N层结构开发中使用最多的是三层结构,分别为表示层、中间层和数据层。HUSTLIB-URP的Web层和数据访问层较好理解,也就是传统意义上的表示层和数据层,其业务外观层和业务规则层则是其独有的。
异构数据库统一检索平台必须具有较好的互操作性。互操作在异构仓储间使用采集的方式。
采集方法将关于这些资源的元数据从各个仓储中收集并提供服务,原始资料还需要到它所在的仓储中去提取。
由于大多数图书馆只拥有对电子资源的使用权,而电子资源中的大多数的数据库接口一般不向用户开放接口,因此,在异构仓储间的互操作方法中,常用的是采集方法。
系统可检索中文和外文数据库,兼容所有可检数据库。真正的原始结果在原有界面中提供全文结果,保留所有原有功能。本系统还可兼容所有主要OpenURL链接解析器,OpenURL链接可嵌入结果引文,方便用户通过鼠标点击找到电子文章。
解决方案必须确保满足不可预知数量的用户的要求,关注如何组合服务任意数量的应用程序或用户的多个系统,以提高可伸缩性和可用性。在本系统中分别应用服务器群集、负载平衡群集和故障转移群集方案,以提高系统的性能和可靠性模式。
本系统具有如下优势:1.并发统一检索;2.快速响应及结果缓存;3.通用性好;4. 结果页面可以继续浏览,支持文件下载;5.支持简单检索和高级检索;6.异构数据库统一检索平台IP认证;7.主页面数据库导航功能。
华中科技大学图书馆已经与武汉的8所全国重点大学图书馆合作,为他们量身定做应用系统,并且对湖北省图书馆和中国地质大学进行定制开发,向合作用户提供部分源代码。