系分论文:XML在网上银行中的应用

企业动态
本文作者结合自己的亲身经历,主要谈谈XML在该项目中的应用。

    2002年3月,我参与了的银行某网上银行系统的升级和改造工作。该系统采取总行、分行两层结构,总行网银中心连接各一级分行,提供信息服务、客户服务、帐务查询和实时交易等功能。网银中心与客户通过Internet相连,与分行业务主机通过城市综合网相连。网上银行的客户使用Browser(浏览器)通过Internet连接到网银中心并且发起网上交易请求;网银中心验证后将交易请求返回;分行业务主机完成交易处理,返回处理结果给网银中心;网银中心对交易结果进行再处理后返回相应的信息给客户。

    原有系统无论从业务上,还是从技术上通过运行一段时间,存在这很多问题,客户和业务人员意见也很多,诸如部分时间交易超时,作业务比较慢,还有无法满足客户的某些个性化的要求,基于ASP+VB的应用也不合时宜,这些都是系统需要改造的原因。

    新系统整个网上银行应用的开发,全部基于JAVA技术,数据的交换采用标准的XML协议,应用开发采用Websphere Studio+Visual Age for Java等工具进行,采用符合国际J2EE标准,系统采用了业界领先的中间件产品(BEA WebLogic)建立网上网上银行系统的交易平台,该系统的主控程序应用JSP和servlet编写,很好地发挥了多线程机制,大大提高了系统的性能;主要业务逻辑采用EJB技术实现,模块化结构利于新业务的开发与布部署;数据库访问符合JDBC标准,利用WebLogic的Jdbc pool提高了数据库访问的效率。

在这里主要谈谈XML在该项目中的应用:

    XML 是一种具有描述数据功能的语言,它十分适合作为知识表示语言或作为组件及文件格式的表示方法。它还可以让数据在不同的来源中,根据通用的语法规则来处理。而Java则是用于Internet、适合于分布式环境、提供了一个跨平台的语言。XML和Java相结合主要原因是基于XML的语法提供了一种灵活的、标准的、健壮的Java编程方案。

   在该项目中这里,我们统一了XML的报文标准,列举了XML实例,规定了XML头部,XML根节点,XML二级节点及具体的报文子段。在接口中的XML报文遵循如下约定:XML头部如实例所示,不得改变;XML根结点、二级节点如实例,不得改变;报文必须是包含‘\0’作为结束符的字符串;接口格式说明中的字段即指实例中具体的报文字段这一级。对于接口文件,规定所有发送、接收的文件名均为调用方确定,均带文件路径。

接下来谈谈原有系统存在的问题:

    因网上银行业务的特殊性,Web客户端需要连接多个业务种类,多种数据库,跨平台,跨数据库,环节多,这就是原有系统交易缓慢的重要原因之一,而且随着可提供新业务的种类的增多,问题暴露的更加明显;其次Web客户端的查询往往对各个应用系统的服务器的负载产生影响,影响了其他业务;同样,对Web客户无法提供个性化服务,B2B,B2C提供的信息和帐页千篇一律,根本无法按照其要求定制;客户端无法进行一些运算,一些简单的比如”“还款试算”等还要通过后台应用服务器来进行运算,加重了主机负担。

    在具体应用中,比如查询某客户的所有业务是困难的,这具体体现在,如果某签约客户想查询或执行信用卡的历史交易,必须向后台相应的业务的数据库服务器提交数据查询请求,而此时的后台服务器又往往又是银行的实时业务处理机,在高峰期正忙,并且历史交易的数据往往由于年终转换的原因,存在于其它数据表甚至其他数据库和服务器,都给查询带来了困难,只能作到有限的查询,或提供的数据项有限,或甚至根本无法提供,比如有关储蓄业务的有关明细帐务已接近3000万条,在高峰期间在其中取几条记录是困难的。另一方面,由于网上银行涉及多个对私和对公的业务,甚至包括资金的清算,一笔交易要跨越多个业务的服务器,这又存在跨不同种类的数据库的问题.
所以,将历史数据分离及整和是必然的,我们也曾考虑过将数据进行归类,建立一个类似"历史数据服务器"(或是数据仓库)上,但该历史数据仍需建立在某种数据库上如INFORMIX-ONS,仅作到了数据的集合,没有治本,投入大,费时。

    所以为了解决原有系统中存在的问题,我们在新系统中我们建立专用的转换服务器,作为"缓存",目的仅是为了"脱离"原有的依赖,减少联机处理,这样,有关历史的交易就不用分别直接连到所需业务的数据库或服务器,我们采用XML格式进行中间的转换。这种所谓的XML数据库其实就是文档的集合.我们用了一台IBM PC SERVER 来存储XML数据,具体就是用UNIX下的文件系统来存储和检索。将部分数据转换成XML文件,包括所有以已签约的客户的历史明细帐及全部卡号(未来新开户时就不用在去信用卡主机进行校验了),同时XML文件的存储按文件系统,并对B2B 和B2C进行了分类。

    这里我们使用了Informix Web DataBlade工具,按照我们自己定义的数据结构进行了批量转换,基本与网银后台数据库服务器的数据库表结构相符,这样做的目的是为了便于更新,且对原有有关调用数据库的数据逻辑改动不大,将数据转换成了XML文件格式,对于其他非Informmix数据库的数据,我们则采取了先将数据倒入导入至Informix数据库,再进行这种转换。 #p#

    有关当日的账务,我们在日终将当日发生的流水帐进转换,存入了数据库,作为了历史交易的追加。在这里Informix Web DataBlade可以通过一个简单的SQL接口产生动态的XML数据和文档,用于日终更新.这样实际就上在数据库与应用服务器之间采用XML作为信息缓存。
 
建好了XML数据库,那么又如何来应用呢?接下来我们谈谈这方面的问题。

    首先读取XML数据。具体的方法为:一个页面通过服务器端对象与XML数据源相连,将信息转换成数据抽象,接着用JSP元素显示数据。这样我们就使用了XSLT转换程序转换XML,.在这里应用到的XSLT技术,XSLT是W3C小组制定的一个转换语言规范,它可以用来将XML数据转换成HTML、PDF或其它XML格式。具体过程就是首先定义了XSLT模板,然后进行转换,除了模板需要定义外,这个解析的过程是还是比较容易的。其实XSLT与XML的关系,就好象SQL与表格化的数据一样。只是在JSP中,需用scriptlet或自定义标签中编程激活一个XSLT处理器来进行转换。在XML数据源上使用一个转换程序,或者是抽取数据或者是创建新的格式,这个转换程序可以使用许多不同的机制来实现并且通过自定义标签来访问它。

    接下来XML应用就是使同样的数据可以以不同的浏览方式出现在浏览器中,而这些数据并不需要从再次从Web服务器上下载。其实这类应用的就是早期的Web上的另我们头疼的”动态表格”。对于B2B的用户,可根据企业要求的,制定不同的往来对帐单,约十多种,以满足其对帐的需要,对其所属职工的集体办理的有关代发工资,缴存公积金,还个人贷款的有关帐务,都有良好的支持,在单位就可了解到,随时的变动,并可随时打印,不用再跑银行进行询问,取帐页.将来甚至直接提供信息化较高的企业XML数据,这也是未来交换数据的标准,也是应用XML的美好憧憬.对于B2C的个人用户,可根据其所开办的业务的不同,来对其提供"个性化"的服务,可提供该人名下的所有帐户的信息,如存贷款信息,各种缴费的信息,并可根据其需求方便的进行排序,筛选,组和,打印.甚至可以自己定制格式,改变了以往显示单一,多业务罗列,操作复杂的状况。Java提供的JSP为多种基于Web的用户产生基于XML的标记语言的问题,也就是我们要达到的"个性化"界面。

    在具体应用中,我们是用从JSP页面产生的XML, XML在Web界面层的应用得益于JSP技术的发展。同样,也有两种方法,一种直接将XML数据源集成到JSP的界面中去的方法是,将XML加载到JavaBeans组件中,然后在JSP中直接引用这些JavaBeans组件。***好处是使我们的程序代码集中在一个地方(对Java技术而言,一般是指在“类”中),清晰,易于管理和修改。另一种方法是直接将XML数据转换成Web显示内容的另一种方法是使用XSL和XSLT,将XML数据映射成HTML(或WML等)的逻辑由XSL样式表(XSL StyleSheet)来定义。样式表描述了每个特定XML数据实体应该怎样转换成界面数据实体(如HTML表格、内联标记等), 采用一套自定义的JSP标记并引用某个XSLT处理程序,也就是前面提到的模板。

    通过比较综合了这两种方案方法,我们作出了选择,选择了后者,XSLT方案的伸缩性要好一些,而且具有更好的可管理性。在这种情形下,我们的转换逻辑是编写在一个XSL样式表中,而不是在Java代码中。这意味着当需要修改界面时,大多数情况下只是编辑样式表或者HTML,代码不受影响,不涉及程序编译的问题,业务人员经过简单的培训就可以修改,这对我们很重要。在网银项目中由于XML的应用,解决了我们许多历史问题,也使银行的B2B和B2C业务进行了有效的整合,更好的为客户服务。

尽管XML是未来网上数据格式的标准,可在具体应用中还存在许多问题:

   尽管我们由于网上银行所要求的数据格式不是很多,可建立XSLT的模板并不是一件容易的事,不是很好写,主要是由于表中嵌套太多,尽管是文本形式,阅读和修改很实际上是复杂的。另外,这种基于文件系统的后台历史数据按XML存储的方案还有待探讨,尽管XML的确与数据库有相似之处,但对于索引、安全机制、数据完整性等特性是不具备的。在实际应用中,我们目前由于签约的客户的数量不是很多,不足万人,尽管我们只应用了一台服务器来存储数据,目前还没有什么问题,但随着签约客户的增多,不知会不会有问题。看来XML还是要发展,想取代数据库还是需要一段时间的。还有,我们未将XML封装进JavaBean,却将部分应用逻辑由XSLT来实现,这种方法是否合适还有待探讨,从某种程度来说是不符合惯例的,不仅仅是Web服务器负载的问题,它给编程人员和维护人员带来的问题有些还是不可预计的。

    我想,未来XML会成为数据交换的标准的,我们也考虑逐步将我们现有的数据转换成XML格式。接下来,我们还将在这些数据的基础上,建立一个统一的,用XML实现通用WEB报表的系统,在这方面已有了成功的案例。现在,大部分数据库支持XML格式的数据查询和转换,包括SQL Server 2000,ORACLE,IBM DB2等大型关系数据库,估计会越来越多,我想以上问题也会很快得到解决的。

【编辑推荐】

  1. 系分论文:论软件开发平台的选择与应用
  2. 系分论文:论软件三层结构的设计
  3. 软考专区
责任编辑:丁小雨 来源: 51cto
相关推荐

2010-07-08 15:45:10

2011-01-21 09:55:07

2009-02-03 10:39:53

系分论文CMM改进

2009-12-15 17:26:18

2009-10-15 10:28:42

2009-10-13 15:11:29

2009-03-12 16:17:28

array应用优化

2009-12-10 10:08:29

2009-02-23 20:21:40

系统分析师论文写作XML

2012-05-30 17:11:58

2009-08-26 14:50:33

网上银行安全威胁威瑞信

2009-03-26 09:01:02

2009-05-25 08:42:57

2013-08-24 14:41:45

2013-08-24 15:01:47

2010-04-20 10:51:40

2009-08-14 17:14:48

汇丰银行威瑞信EV SSL网上银行服务

2014-02-18 14:16:48

2014-08-06 13:42:04

HID Global身份验证

2011-03-30 20:31:26

点赞
收藏

51CTO技术栈公众号