图书馆自助借还系统高可用性研究
2018-04-02
(成都理工大学图书馆 四川 成都 610059)
一、引言
伴随着RFID技术在图书馆的引入,图书馆智能化得到了进一步的提升。岗位逐步被智能化设备所替代,服务效率却不断提高。图书馆工作人员从原来重复而单调的体力工作者逐渐转换成更富有生产力的知识工作者。但这些智能化设备偶发故障,却会为图书馆带来不少的麻烦。因此,如何确保其正常运作,对图书馆提出了更高的要求。
二、我馆现状
成都理工大学图书馆,从开始尝试RFID,三年时间后就全面采用RFID。由于RFID在智能化上拥有的绝对优势,让我馆在读者服务和图书馆创新方面走到我国高校图书馆行业的前列。RFID技术引入,图书馆工作人员大幅缩减,同时在馆舍面积扩大和读者的数量的增加的情况下,我馆提供的服务质量和服务水平有增无减。图书借还这个作为图书馆最主要的工作之一,已全面由RFID自助借还设备替代。
图书馆为重点防火单位。因此在我馆的管理规则上要求,闭馆之后,非必须持续工作的电子设备务必断电。这也包括我们RFID自助借还设备。这些设备采用Windows系统,使用固态硬盘,同时拥有虚拟还原系统的保护。因此,在设备“意外”断电情况下,并不会伤害到设备本身。在我馆长达三年之久如此操作中,暂未发现由于“意外”断电而导致设备损坏的情况。因此,在这些RFID设备使用中,依然延续采用“拉闸”方式为其断电。
为自助借还系统“AutoBorrowBack”创建“快捷启动”,将其加入Windows启动项,该系统将随Windows自动启动。这些设备的BIOS中开启“来电启动”功能。开馆前“合闸”通电,设备自动启动,依次启动Windows、启动“AutoBorrowBack”,开始为读者提供服务。
三、遇到的问题
“AutoBorrowBack”为读者提供“自助借还”服务,需访问中间件服务器。在我馆网络结构调整之后,出现了一些该软件从未考虑的意外。首先,Windows计算机启动时间少于交换机启动的时间,导致“AutoBorrowBack”启动后无法连接到中间件服务器,而卡死在连接失败的界面。其次,采用了普通PC的架构的设备,在运行过程中由于其他干扰因素,偶尔发生的程序错误。虽然这些“意外”出现的概率很低,但在我馆的实际使用中,却是时常发生。
四、解决方案及步骤
通常采用两种方式来解决这些问题。第一,与软件商协商修改软件,让软件能够智能化处理这些异常。第二,编写第三方软件进行异常处理。考虑到与软件商的沟通成本、修补成本和时间周期,我馆决定自行研发第三方软件“NetStartApp”以解决这些问题。
我们取消“AutoBorrowBack”随Windows系统启动,而让“NetStartApp”随Windows自动启动。NetStartApp定时检测本机与中间件服务器之间的通讯。当通讯正常后,由“NetStartApp”再启动“AutoBorrowBack”。这样解决了“AutoBorrowBack”早于交换机完成启动,而而无法连接到中间件服务器的问题。
如果软件中遇到未考虑到此“意外”情况,Windows以“关闭”的方式自行处理。一旦软件“关闭”而退出,就无法继续提供服务,直到再次启动该软件。“NetStartApp”实时监控“AutoBorrowBack”,若有退出,则马上将其启动。这样解决了“AutoBorrowBack”由于“意外”导致被关闭而无法提供服务的问题。
当网络出现短时间异常时,软件界面会进行断网提示,网络恢复后,可继续服务。但长时间的网络异常后,“AutoBorrowBack”会卡死在报错界面,需手动关闭、启动软件。因此,让“NetStartApp”检测到网络异常达到一定的时间,结束“AutoBorrowBack”,当网络恢复后,再次启动该软件即可。
五、程序具体实现
在C#编程语言中,命名空间“System.Diagnostics”中的“Process”中的相关实现可以完成进程相关管理,包括启动、杀死进程。“System.Timers”中的Timer类中相关实现可以完成定时器相关操作。“System.Net.NetworkInformation”中的“Ping”中的相关实现可以完成网络状况的检测。核心代码片段如下:
foreach(Process p in Process.GetProcesses()){……;p.Kill();……;}
Process process = new Process();
process.StartInfo.FileName = WinApp;
process.Start();
Ping ping = new Ping();
PingReply reply = ping.Send(NetAddress);
六、结束语
如果在有技术实力的情况下,对于一些少见的系统异常,可通过开发第三方软件的方式来有效解决,不但可以迅速解决问题,而且可以节省许多沟通成本与时间成本。目前我馆开发的“NetStartApp”,已在我馆全部自助借还设备上进行了部署,经过三个月的运行,目前效果良好。
[1]利用TIMER控件实现动画的三种方法[J].马玉洁.内燃机与配件.2017(01)
[2]Process Class(System.Diagnostics)[EB/OL].https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx,2018
[3]Ping Class(System.Net.NetworkInformation)[EB/OL].https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping(v=vs.110).aspx,2018