系统架构师论文-XML在网上银行中的应用

XML在网上银行中的应用

[摘要]

网上银行是指在Internet上提供银行服务,即银行的客户无须到银行柜台办理业务,可以在家庭、办公室等能够连入Internet的任何一处,登录到银行的网站进行交易。这是一种崭新的银行运营模式,具有方便快捷、成本低廉、不受时间地点限制等优点。 本文通过论述的项目是某银行行网上银行系统的1.0版本到2.0版本的升级和改造,论述了 XML在Internet中的应用。我有幸参加了这个项目,承担在该项目中担当了部分的分析与设计的部分任务。系统的1.0版本存在诸如交易超时、作业比较慢、不能满足客户个性化、技术相対落后等缺点。在2.0该项目版本的设计和开发过程中,我们基于JAVA技术,采用J2EE构架,使用应用了 XML作为数据交换的标准,-在后台,基于业务数据建立了 XML数据库,存放签约客户的历更数据,同时在Web服务端,我们也应用了 XML,读取XML数据库中的数据,同时给客户提供了 “个性化"的服务。这些技术的采用,解决了 1.0版中存在的问题。但是,因为XML是一种新的标准,有些地方还不是很完善,在J2EE架构下,如何使用XML是我们应该一直关注的问题,本文就该问题也有所论述。

[正文]

2002年3月,我参与了的银行某网上银行系统的升级和改造工作。该系统采取总行、分行两层结构,总行网银中心连接各一级分行,提供信息服务、客户服务、帐务查询和实时交易等功能。网银中心与客户通过Internet相连,与分行业务主机通过城市综合网相连。网上银行的客户使用Browserf浏览器)通过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万条,在高峰期间在其中取几条记录是困难的。另一方面,由于网上银行涉及多个対私和対公的业务,軽至包括资金的清算,一笔交易要跨越多个业务的服务器,这又存在跨不同种类的数据库的问题.所以,将历更数据分离及整和是必然的,我们也曾考虑过将数据进行归类,建立一个类似"历更数据服务器"(或是数据仓库)上,但该历更数据仍需建立在某种数据库上如INFOEMIX-ONS,仅作到了数据的集合,没有治本,投入大,费时. 所以为了解决原有系统中存在的问题,我们在新系统中我们建立专用的转换服务器,作为"缓存",目的仅是为了 "脱离"原有的依赖,减少联机处理,这样,有关历更的交易就不用分别直接连到所需业务的数据库或服务器,我们采用XML格式进行中间的转换。这种所谓的XML数据库其实就是文档的集合.我们用了一台IBM PC SERVER来存储XML数据,具体就是用UNIX下的文件系统来存储和检索。将部分数据转换成XML文件,包括所有以已签约的客户的历更明细帐及全部卡与(未来新开户时就不用在去信用卡主机进行校验了),同时XML文件的存储按文件系统,并対B2B和B2C进行了分类。 这里我们使用了 Informix Web DataBlade工具,按照我们自己定义的数据结构进行了批量转换,基本与网银后台数据库服务器的数据库表结构相符,这样做的目的是为了便于更新,且対原有有关调用数据库的数据逻辑改动不大,将数据转换成了 XML文件格式,対于其他非Informix数据库的数据,我们则采取了先将数据倒入导入至Informix数据库,再进行这种转换。 有关当日的账务,我们在日终将当日发生的流水帐进转换,存入了数据库,作为了历更交易的追加。在这里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数据实体应该怎样转换成界面数据实体(如OTL表格、内联标记等),采用一套自定义的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 W大型关系数据库,估计会越来越多,我想以上问题也会很快得到解决的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA人生/面试技巧

JAVA基础复习(重点)

(2)一个.java源文件中可以声明多个类,但是只能有一个public修饰的类,文件名要和public修饰的类名保持一致;

12620
来自专栏北风IT之路

阅读Spring源码:IOC控制反转前的处理

从ClassPathXmlApplicationContext入口,最终都会调用到

8020
来自专栏LINUX阅码场

Javascript:一个屌丝的逆袭

是的, 我就是鼎鼎大名的Javascript, 典型的高富帅,前端编程之王,数以百万计的程序员使用我来编程。 如果你没有用过我就太out了。

6330
来自专栏一名白帽的成长史

【SQL注入】关于报错注入的一些测试

我们这里使用sqli-labs靶机来进行测试,这是一个练习sql注入的专用靶机,如下:

6920
来自专栏java_python

java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(下)

  我们上次大致说完了执行流程,也只是说了大致的过程,还有中间会出错的情况我们来处理一下。

8930
来自专栏happyJared

Spring 应用之工厂设计模式

Spring 中应用到了工厂设计模式,如:通过 BeanFactory 或 ApplicationContext 创建 bean 对象。

6330
来自专栏咸鱼学Python

Python爬虫进阶必备 | 关于MD5 Hash 的案例分析与总结

aHR0cHM6Ly9tLndjYmNoaW5hLmNvbS9sb2dpbi9vdGhlci1sb2dpbi5odG1s

12330
来自专栏JAVA人生/面试技巧

JavaSE笔记

(2)一个.java源文件中可以声明多个类,但是只能有一个public修饰的类,文件名要和public修饰的类名保持一致;

13220
来自专栏知了一笑

Linux系统:Centos7下搭建ClickHouse列式存储数据库

8320
来自专栏java一日一条

如何写出无法维护的代码

总之,我们的口号是—— Write Everywhere, Read Nowhere

8510

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励