基于Eclipse RCP的银行柜面软件架构可扩展性的研究

2018-12-24 23:43:59
软件 2018年5期
关键词:柜面可扩展性插件

刘 艳

(安徽信息工程学院,安徽 芜湖 241000)

0 引言

软件架构是一系列相关的抽象模式,用于指导大型软件系统的设计。良好的软件架构能帮助项目管理人员更好地管理时间和预算,预防项目后期很多的维护问题的出现。软件架构的可扩展性是指软件适应环境变化的能力。可扩展性是指在面临环境变化时,软件不需要改变核心的架构,只需要经过少量的改动就能满足用户的需求。如果架构在设计早期没有考虑过这些需求,那么就需要修复架构的设计甚至会推倒整个架构。最后,达到为了实现新需求而重新开发一套软件的局面,给软件项目的成本和风险控制带来了不利的影响。在软件架构发展的过程中,出现了一些典型的软件架构,比如,MVC,事件驱动架构以及微核架构等。

MVC全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。它是一种软件架构的典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。这种架构的优点是结构简单,不同技能的人员可以负责不同的方面,每一层可以独立测试,其他层的接口通过模拟可以解决。缺点是,当环境变化时,比如代码调整或者功能增加时,必须变动每一层,导致扩展很困难。

事件驱动框架定义了一个设计和实现一个应用系统的方法学,在这个系统里事件可传输于松散耦合的组件和服务之间。它使用分布式的异步模式,事件处理器之间高度解耦,具有良好的软件可扩展性,性能较好,不容易产生堵塞。缺点在于由于涉及到异步编程,开发者学习起来比较困难,而且分布式和异步特性导致这个架构难以测试。

微核架构又称为插件架构,指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。这种架构具有良好的功能延伸性,通过开发插件,可以适应功能增加的需求;插件之间是隔离的,插件可以独立的加载和卸载,测试和部署比较方便;可定制性高,适应不同的开发需求;具有良好的文档支持,开发者可以在很短的时间内掌握这项技能。

针对传统软件架构的缺点,本文提出一种基于Eclipse RCP的软件架构:首先,该软件架构是一种微核架构,所以具有良好的可扩展性。第二,在测试步骤,既能独立加载测试数据进行测试,也能和其他模块进行集成测试。第三,在升级步骤,可以使用统一升级方式或者本地安装包的方式升级,不会影响其他模块的调用。第四,Eclipse整个开源社区为项目提供了丰富的技术和文档支持,开发人员上手比较方便。本文第1节介绍了Eclipse RCP和它的体系结构。第2节以实际的银行项目的例子介绍了Eclipse RCP在银行柜面软件架构上的应用。最后,第3节对本文的目前工作做了总结,指出下一步的研究方向。

1 Eclipse RCP

1.1 Eclipse RCP介绍

Eclipse是一个基于Java的可扩展的开发平台。Eclipse的前身是Visual Age,由于其可扩展性较差,同时又面临其他竞争对手的产品压力,IBM决定开发一个更加开放的,具有良好可扩展性的,能更好为其开发工具提供支持的集成化平台[1]。2000年,第一代 Eclipse诞生。Oracle,Google,Red Hat,Borland等巨头先后踊跃成为该基金会的会员。Eclipse经过多年的更新迭代,目前的稳定版本号是4.7。

Eclipse RCP是一项位于Eclipse平台核心的功能。它采用微核架构,提供了标准化的组件模型,目的为开发人员提供一个功能强大的、快速的、可扩展性的平台。RCP是Rich Client Platform的缩写,即富客户端,目标是结合胖客户端和瘦客户端的优势并克服其固有的缺点。随着Eclipse版本的迭代,Eclipse RCP平台应用快速增加,具有以下优点:

(1)可扩展性

Eclipse基于插件进行扩展的思想使得用户可以方便地搭建各种规模、类型和用途的应用程序。按照Eclipse官方的说法,Eclipse RCP一开始就被设计为可扩展性的。

(2)方便性

Eclipse RCP对各个平台下的产品包装提供了强有力的支持,其开发的RCP甚至可以在嵌入式设备、掌上电脑上运行。由于Java语言的可移植性的特点,Eclipse RCP也可以说是可以跨平台运行。

(3)统一升级

用户可以通过Eclipse客户端,使用远程或者本地方式进行安装更新,彻底解除了早期富客户端应用部署升级的麻烦。

(4)基于组件开发

基于Eclipse的系统由插件组成,开发人员以插件形式添加功能,在这种开发模式下,程序员可以并行开发和独立测试,提高了程序开发的效率。

(5)良好的用户体验

Eclipse为各种操作系统提供了本地图形接口包。当RCP运行时,Eclipse首先调用本机窗口组件,只有没有本机所需组件时才进行模拟。RCP在不同的操作系统上都具有一致的外观和行为。UI设计者使用界面设计工具可以设计出漂亮的用户界面。

1.2 Eclipse RCP体系结构

Eclipse RCP平台是运行时内核和插件的组合,由Workbench工作台,Workspace工作区,Help帮助系统,Team团队支持系统和Platform运行平台组成。

(1)Workbench工作台

为Eclipse提供用户界面。它是使用SWT(Standard Widget Toolkit)和JFace来构建的;SWT是Java的Swing/AWT GUI API的非标准替代者,JFace则是建立在SWT基础上,提供用户界面组件。

(2)Workspace工作区

工作区是负责管理用户资源的插件。包括用户创建的项目、项目中的文件,以及文件变更和其它资源。工作区还负责通知其他插件关于资源变更的信息,包括文件创建、删除或者变更的情况。

(3)Help帮助系统

帮助系统具有与 Eclipse平台本身相当的可扩展能力。帮助提供一个附加的导航结构,允许工具以HTML文件的形式添加文档。

(4)Team团队支持系统

团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,允许用户与

有使用的任何版本控制系统交互。

(5)Platform Runtime运行平台

是整个Eclipse的内核,启动时检查已安装了哪些插件,并创建注册表信息。为了降低启动时间,提高资源利用率,平台使用“懒”加载的方式加载插件,即需要时才加载。

2 Eclipse RCP在银行柜面软件架构上的应用

2.1 项目背景

由于历史原因,银行柜面系统存在如下问题:字符终端展现能力非常有限,难以满足低柜业务如理财、贷款、外汇等业务处理要求;柜面系统缺乏强大的平台支持,往往占相应项目开发工作量的一半以上,业务功能的更新迭代需要大量的维护工作;现有柜面系统的用户体验性较差,即使是图形界面,无法做到真正的所见即所得,二次开发的扩展性亟待提高。在此情况下,如何设计具有良好的可扩展性的柜面软件架构是需要解决的问题。

2.2 系统分析

银行柜面系统包含的功能模块主要有:综合开户,综合签约,集中授权,单点登录,交易搜索,公告栏,常用交易,工具,便签,邮件消息,配置,锁屏,帮助管理,柜员管理,权限管理,日志管理等功能。同时,需要兼容后期业务扩充的需求,提供一个可扩展性的软件架构,能够快速开发新的功能模块。

2.3 系统设计

银行柜面系统采用Eclipse RCP插件体系结构,优点如下:1)容易扩展:独立编译和打包,独立部署和测试。2)容易升级:粒度以插件为单位,降低了由于升级带来的系统宕机的风险;还可以节省网络带宽。

银行柜面系统包括客户端和服务端,客户端负责接收用户的请求,并判断请求是否在客户端处理范围内,如果在,则客户端直接处理请求并将结果返回用户;如果不在,则转发请求到服务端,由服务端处理完毕返回给客户端。客户端和服务端采用相同的Eclipse RCP插件体系结构,包括外设模块,交易处理模块,统一配置模块,资源模块,通讯模块,ESB通讯扩展模块等。

2.4 系统实现

基于 Eclipse RCP的银行柜面系统采取插件体系架构,可扩展性比较强。下面介绍怎样在Eclipse RCP平台上完成将数据库中的组织记录以树状结构显示出来。

在开发阶段,首先,找到数据库的插件工程,新建一个类继承自组件类。然后,得到输入参数并转化为符合期望的目标类型。循环所有的组织记录,找到组织间的层级关系,并设置组织类的关系。最后,将处理后的组织父类显示在界面上。

在测试阶段,自发给这个组件添加输入参数,添加断点,查看运行结果是否满足要求。

在部署阶段,选择导出数据库的插件工程,然后将压缩文件部署到银行柜面测试系统中进行测试。如果结果正确,则部署相应的压缩文件到生产系统中。

该类主要的源代码如下:

// 得到输入的记录数组

List list = (List)command.getParameter(RECORD_LIST);

// 处理异常

if(list == null) {

throw new Exception(“传入的数据库记录为 null!”);

}

// 构建组织树

buildTree(list);

// 界面上异步显示

Display.asyncExec (new Runnable() {

public void run()

{

target.initTree(list);

}

});

3 结论

基于 Eclipse RCP的银行柜面软件已经推广到多家银行,事实证明,该软件运行稳定,功能新增快捷,具有良好的可扩展性。但是,由于Eclipse RCP本身使用Java语言开发插件,软件在运行一段时间后,性能会急剧下降,导致每隔一段时间需要重启服务器。因此,找到性能瓶颈,有策略的优化程序是下一步要研究的问题。

[1] 陈冈. Eclipse RCP应用系统开发方法与实战, 电子工业出版社, 2007

[2] 王如迅. 基于SWTBot技术的软件自动化测试的研究与实现[J]. 软件, 2016, 37(2): 121-128.

[3] 饶启聪, 许丹, 蒋海洪. 健康大数据智能采集与挖掘系统平台的软件架构实践[J]. 软件, 2017, 38(8): 200-203.

[4] 宫爱爱, 丁香乾, 侯瑞春. 基于Eclipse智能代码生成框架的研究[J]. 现代电子技术, 2013, 36(18): 55-58.

[5] 杨攀. 基于Eclipse RCP框架的地质监测数据可视化应用研究[J]. 电脑与电信, 2015(3): 77-78+84.

[6] 董晓敏. 基于Eclipse RCP平台的学校经费测算系统设计与实现[D]. 青岛理工大学, 2014.

[7] 孙菁. 基于Eclipse RCP的模型测试管理工具设计与实现[D]. 西安电子科技大学, 2015.

[8] 殷新毅. 基于Eclipse RCP的中学学籍管理系统设计与实现[D]. 电子科技大学, 2013.

[9] 陈东山, 陈志伟. 基于Eclipse RCP技术的0. 5T磁共振成像仪控制和数据处理软件系统开发[J]. 中国医疗设备, 2015,30(7): 30-32.

[10] 于丽. 基于敏捷开发模式的软件架构设计[J]. 电脑知识与技术, 2015, 11(6): 91-92+94.

[11] 王爱景. 敏捷开发中软件架构的设计与实践[D]. 河南大学, 2015.

[12] 马丽娟. 基于软件开发环节中软件架构的作用研究[J]. 电子测试, 2017(13): 69-70.

[13] 白金. 软件架构模式在信息系统开发中的应用分析[J]. 通讯世界, 2017(10): 249-250.

[14] 王智超, 王敏, 熊燕. 软件架构设计之多视角分析[J]. 现代计算机(专业版), 2014(30): 35-37.

[15] 姜立. 软件架构综合评价系统的设计与实现[D]. 东南大学, 2015.

[16] 孙志勇. 滨海海化集团ERP软件架构系统的设计与实现[D]. 电子科技大学, 2014.

猜你喜欢
柜面可扩展性插件
商业银行加强柜面操作风险管控的策略
经营者(2024年4期)2024-05-08 08:52:38
商业银行柜面操作风险管理研究
自编插件完善App Inventor与乐高机器人通信
电子制作(2019年22期)2020-01-14 03:16:34
恩智浦推出全新i.MX 8X 处理器,为工业应用带来更高的安全性、可靠性和可扩展性
汽车零部件(2017年3期)2017-07-12 17:03:58
电力监控软件的可扩展性设计
自动化博览(2017年2期)2017-06-05 11:40:39
浅谈新形势下基层农行如何提升柜面分流率
现代金融(2016年7期)2016-12-01 04:50:22
基于微软技术的高可扩展性中小企业系统解决方案研究
构建高可扩展性的物流装备管理系统
浅析营业网点柜面劳动组合的优化——以乐山市农行为例
MapWindowGIS插件机制及应用