基于SOA架构的图书馆信息服务系统改造
2020-09-26罗尹奇许毅
罗尹奇 许毅
摘要:[目的/意义]为解决图书馆遗留的信息系统无法适应新业务需要的问题,[方法/过程]该文提出采用SOA架构实现对既有系统进行升级改造,从而演化出新的服务。图书馆遗留的信息系统具有技术过时、二次开发困难、替换周期长等特点,导致其无法在短时间内得到有效替代,更无法融合到图书馆新的业务中去,进而形成了“孤岛系统”。[结果/结论]该文通过SOA架构对既有系统进行再次封装改造,并以系统接口的形式为新业务系统提供服务,从而实现既有系统与新系统的整合。
关键词:SOA;Web Service;既有系统;服务升级
中图分类号:G251 文献标识码:A
文章编号:1009-3044(2020)24-0011-04
Abstract: [Purpose/significance]In order to solve the problem that the legacy information system of a library can not meet the needs of new business, [Method/process]this paper proposes to use SOA to upgrade the existing system, to evolve new services. The legacy information system of a library has the characteristics of outdated technology, difficult secondary development and long replacement cycle, which makes it unable to be effectively replaced in a short period, and can not be integrated into the new business of the library, thus forming the "island system". [Result/conclusion]This paper proposes to use SOA architecture to encapsulate the existing system and provide services for the new business system in the form of system interface, to realize the integration of the existing system and the new system.
Key words: SOA; Web Service; the existing system; service upgradation
1背景
随着图书馆信息化建设的持续推进以及技术的不断迭代升级,新型信息化系统逐步在图书馆各业务领域得到应用。然而图书馆的业务具有流程复杂、功能庞大、覆盖面广、关联交错等特点,导致新型信息化系统无法一次性对既有系统进行彻底地改造升级。这就使得图书馆建设面临两大难题:
1)业务设计困难。在顶层业务领域,新系统与既有系统长期共存。既有系统一方面不能很好地适应新业务需求,另一方面又处于暂时无法替代的核心地位。这就造成了图书馆在业务设计上既要满足新需求,又必须同时兼顾既有系统的矛盾。
2)技术实施困难。在底层技术领域,新系统与既有系统的技术架构不兼容。既有系统往往不仅技术老旧,而且多数情况下为商业闭源系统,二次开发极为困难。这就导致了既有系统无法整合到新系统中去,进而形成了“孤岛系统”。
为了解决上述两大难题,本文针对既有系统的闭源程度,提出了采用SOA架构对既有系统进行再次封装,并以系统接口的形式为新业务系统提供服务。在具体实现上,本文通过不同的实施策略,将多元化异构的既有系统封装为Web Service,屏蔽各系统的技术差异,同时采用LDAP目录服务进行配置管理,从而为新系统提供标准化、统一化的访问接口。
2体系架构
2.1 SOA简介
SOA(Service-Oriented Architecture,面向服务体系架构)是一种分布式的软件模型,是一种粗粒度、松耦合的服务结构[1]。一个大型的业务系统往往包含众多不同功能组件,由于业务场景和实际部署的需要,各组件多数情况下是异构多元的。SOA通过定义良好的接口规范和协议,将各组件实现有机结合起来,从而完成复杂的功能流程。在SOA中接口是采用中立方式定义,主要体现在接口与寄宿的硬件平台、操作系统以及编程语言无关。这就保证了各个异构组件可以以一种统一通用的方式进行交互。
作为SOA的一种具体实现,Web Service是一个平台无关的、低耦合高内聚的、可编程的Web应用程序[2]。Web Service使用开放的XML标准来描述、发布、访问应用程序,并以之为载体实现各个系统之间的数据交互。Web Service在构建分布式应用程序时,需要一套协议规范提供支持,其中较为重要的包括:
SOA架构从软件模型上描述了系统各组件之间的交互,Web Service则提供了具体的实现方式。在本文中使用Web Service作为实现图书馆信息服务系统改造的技术途径。
2.2系统架构
为实现图书馆信息服务系统的改造,系统采用了多层软件架构[3]:应用层、服务层、实现层以及配置层,从而达到系统解耦以及软件复用的目的。其具体结构如下:
2.2.1应用层
面向用户提供业务服务。图书馆的应用往往并非单一功能,而是由众多子功能有机组合而成,因此應用层会根据业务流程的需要调用一个或多个服务层接口。该调用过程是在本地代码中实现的,接口类型为本地接口而非Web Service,无须经过网络访问。
2.2.2服务层
为应用层提供基础的服务支持。服务层处于中间核心地位,一方面服务层为应用层提供本地化的接口(多数情况下为本地函数或方法),另一方面服务层调用Web Service客户端,通过内部网络访问各个封装后的既有系统。由于既有系统并不能满足当前业务的需要,或者一个服务可能需要多个既有系统同时支持,因此调用的Web Service客户端可能是一个或多个。
2.2.3实现层
负责实现执行具体的业务。实现层是整个架构的基础,其重要作用体现在对既有系统的再次封装,并以Web Service接口形式在内部网络中发布。既有系统自身是具有相关数据和业务的,在无法用新型信息化系统替换的情况下,其数据和业务是相互配合且无法分割的,否则强制拆分会引发系统错误甚至平台崩溃。因此再次封装时将既有系统作为黑盒处理,并根据新功能的需求附加额外的数据和业务。封装过程具有原子性,即一个既有系统封装为一个接口,避免多个系统封装为一个接口,从而降低系统间耦合。
2.2.4配置层
负责参数配置及接口统一管理。由于接口封装会涉及配置参数、发布地址以及命名空间等信息,并且封装的系统数量较为庞大,因此需要配置中心对所有的接口进行统一配置和管理。
2.3闭源层次分析
图书馆既有系统的一个重要特点是在多数情况下,系统为商业闭源软件。闭源层次主要体现在数据闭源和业务闭源两个层次上,其关系如下:
其中第二、三、四类闭源层次中,数据与业务至少有一项为开源,数据可以直接访问或业务代码可直接调用,因此在此类既有系统上演化出新的服务较为容易。而第一类闭源层次是数据与业务同时闭源,数据与业务代码均无法获取,导致既有系统难以通过二次开发的方式实现升级,这也是当前图书馆信息化建设中遇到的普遍问题。
从图书馆建设的角度来看,业务是隨着需求的变化而不断演进的,即新业务不断出现而旧业务不断被淘汰,业务本身不具备持久性;而数据则是整个建设过程的核心,所有系统均是围绕图书馆核心数据展开,即业务会变化但访问的数据可能没有本质改变。故针对不同闭源层次的既有系统,其封装过程的核心思想是:尽量保持数据的连续性,尽量复用业务过程。
3服务改造
根据既有系统的闭源程度,本文采用Web Service作为SOA架构的实现方式,从顶层设计的角度描述不同闭源情况下的服务改造方法,以及各方法的优缺点。改造过程遵循尽量保持数据的连续性,尽量复用业务过程的封装思想。
3.1针对第三、四类的改造
在第三、四类闭源层次中,由于处于核心资源地位的数据本身是开源的,因此在改造服务的时候可以完全围绕数据展开。改造过程既可以直接访问数据,也可以调用部分开源业务代码,其思路如下:
直接对数据的操作可以有效地保证系统的高性能,新业务与既有系统无耦合,两者相对独立,可以更好与当前图书馆需求契合。同时部分开源业务代码可以应用到新业务代码中,提高了复用率。
缺点则是一方面开发周期较长,要实现新业务完全替代既有系统的过程是较为耗时的;另一方面尽管数据开源,数据本身存在关联和约束,直接对数据操作可能会引发系统异常,即新业务未经过实践检验,可能存在潜在的问题,远不及既有系统稳定健壮。
3.2针对第二类的改造
在第二类闭源层次中,处于核心资源地位的数据是闭源的,这就导致了数据内部关系无法探知,特别是数据的存储过程、触发器、主键、外键等,即数据间的关联和约束无法获取,即使对开源业务代码分析也无法保证数据完整性。
然而业务开源保证了数据访问过程是可知的,新业务可以基于该访问过程实现间接访问数据。同时数据读取接口开源又能在一定程度上实现将部分闭源数据导出,从而构建出闭源数据的一个子集,尽可能降低数据闭源带来的限制。其思路如下:
通过开源业务的数据存取接口,闭源数据对于新业务是透明的,屏蔽了数据存储的具体细节。新业务调用接口能够保证数据的一致性和完整性,不易出现系统数据异常。同时通过读取接口能够获取部分闭源数据,并将其提供给新业务,降低了数据访问限制。
缺点则是新业务与既有系统存在一定的耦合,数据上的限制导致了无法演化出更为复杂的业务。由于调用了既有系统的数据访问接口,新业务从编程语言、部署平台和通信协议等均受到一定的约束。
3.3针对第一类的改造
在第一类闭源层次中,数据与业务均闭源,这是当前图书馆面临的最为普遍的问题,即整个系统为典型的黑盒,数据本身无法访问,既有的业务也难以对其做二次开发。
从用户角度来看,尽管既有系统无法探知其具体的数据和业务,但可以通过代理模拟用户访问系统的方式实现自动化控制既有系统,并最终将用户代理以服务接口的形式提供出来。以该方式实现改造,可以将既有系统以整体的形式提供服务,服务接口的功能为既有系统的一个子功能或多个子功能的组合。其思路如下:
通过模拟用户操作既有系统的方式,原本需要用户介入的既有系统可以实现自动化的控制。模拟软件本身的开发与既有系统无关,仅与系统运行平台有关,而平台丰富的API(如屏幕事件、鼠标事件、键盘事件等)则为模拟软件的实现提供了支持。同时既有系统以整体的方式提供服务,极大缩短了研发周期,降低了成本,并且充分应用了既有系统的稳定性和健壮性。
缺点包括三个方面:一是用户代理的本质是利用代理程序来控制既有系统,其性能远低于代码级访问,系统延时明显,无法应用到高实时场景;二是由于是从整体上对既有系统的封装,服务接口受到既有系统的限制,仅能做功能上的组合,难以演化出新的功能;三是用户代理仅实现模拟用户行为,对于既有系统的行为难以控制,因此会出现操作失败或系统无响应的问题。
4实例分析
本文以电子科技大学图书馆闸机系统为例,具体分析基于SOA架构的服务改造。电子科技大学图书馆闸机系统属于典型的第一类闭源层次,即系统业务代码和数据同时闭源。
闸机白名单需要通过控制台软件自动下发(每1小时同步一次)或采用手动下发(点击确认按钮后即时同步)到六个闸机上(三个入口闸机和三个出口闸机)。闸机白名单数据库不接受远程访问,仅允许本机同步软件实施更新;而同步软件则通过TCP/IP协议与控制台软件连接,接受控制台的下发指令和白名单数据。下发过程传递的数据包编码协议、加密协议、校验协议等均闭源。具体架构如下。
在“新型冠状肺炎病毒”疫情的影响下,图书馆需要实施预约管理,即进出入图书馆的师生必须通过预约系统预约成功后,才能刷卡进入或离开。原有的闸机系统采用1小时自动同步一次白名单的机制已完全无法适应当前精细化管理的需求。
为了达到即时预约、即时进出的管理效果,现有的闸机系统需要进行改造,并整合到预约系统中。根据第一类闭源层次的改造思路,通过构造用户代理来模拟手動发下过程,即此时将管理员点击确认按钮的人工操作转化为自动控制。用户代理的点击动作通过Web Service接口形式发布到内部网络中,并配置IP准入规则,从而保证仅能由预约系统访问。改造后的架构如下:
用户代理的实现完全模拟了管理员人工操作的过程:屏幕抓取后判断确认按钮所在的位置,计算出按钮中心的屏幕坐标(X,Y);通过平台API获取鼠标对象并移动到按钮中心的屏幕坐标处;触发鼠标点击事件,实现点击确认按钮。在成功点击后,控制台程序便执行后续的下发操作实现闸机同步。
经过改造之后图书馆闸机系统可以受预约系统的控制,无须人工操作即可实现即时下发,也即预约系统可以根据当前预约人员的变化,动态的、即时的、响应式的控制闸机出入白名单。由于下发过程本质上还是需通过控制台实现,并且六个闸机是逐一更新的,因此白名单生效存在一定的延时。为了防止预约系统过于频繁调用下发接口导致白名单无法彻底更新,Web Service接口同时提供了状态查询功能。该状态用于描述点击状态,从而实现控制两次相邻点击事件的时间间隔。在预约系统需要更新数据前对接口状态进行查询,只有状态可用时才调用下发接口。
5结束语
实例分析表明,基于SOA架构的图书馆信息服务系统改造是可行的,即可采用SOA架构对既有系统进行再次封装改造,并以系统接口的形式为新业务系统提供服务,从而实现既有系统与新系统的整合。
然而基于SOA架构同样存在一定的不足,主要涉及分布式事务、数据一致性以及网络延时带来的性能问题,在后续的工作中还需进一步深入研究分析。
参考文献:
[1] 刘慧力.基于SOA的应用型高校图书馆存包柜管理系统设计研究[J].当代图书馆,2020(1): 9-11, 26.
[2] 黄鲲翔.数字图书馆网络信息资源整合及其技术分析[J].河南图书馆学刊,2019, 39(2): 109-111.
[3] 徐琳君,刘长娥,逯连静,等.SOA和云计算技术在图书馆服务“三农”中的应用[J].微型电脑应用,2018, 34(2): 11-14.
【通联编辑:谢媛媛】