专栏首页cwl_Java系统架构师论文-论XML技术在Internet平台上的应用

系统架构师论文-论XML技术在Internet平台上的应用

论XML技术在Internet平台上的应用

[摘要]

2002年10月,我参与了一个三层在线商城的项目开发,该项目整合了来自不同商家的信息,方便在线用户的查询和购买。 在该项目中,我担任系统分析的工作。在分析设计过程中,我借鉴了 XML成熟的技术,采用Java语言,整个系统由三层组成。在数据层,対于不同的数据库,最后都以XML数据的形式来实行数据间的转换和处理。在业务逻辑层,在联机会话的持续时间内,用户的帐户数据在内存中以XML D0M形式表示,在表示层,所以给用户的信息首先都封装成XML数据,然后用服务器或者客户机附带的XSLT转换,根据浏览器的性能将XML数据转换为OTL在前端显示。 在设计过程中,如设计XML的各个基本元素,我应用域分析的方法,在采用XMLD0M形式的时候,分析比较了其他的形式,在将XML转换为HIM.的设计中,引用了 XSLT。

[正文]

随着Internet信息技术的发展,我所在的公司准备开发一个网上商城,这样各个商家就可以把自己的产品信息在这个网上商城中发布,并且提供了在线购买。也就是开发一个电子商务平台,在这个平台上,整合了来自不同商家的信息,方便在线用户的查询和购买。有点类似现实中的商城,为各个商家提供地方,方便消费者购买。 本人有幸成为这个项目的系统分析员之一,参与了这个系统的设计,并且対系统中的关键实现技术也进行了一一验证。整个网上商城系统由三层组成。在数据层,由于各个商家自己有着不同的数据库来存储自己信息,为了实行信息在同一平台上的共享和处理,我们采用XML数据的形式来实行数据间的转换和处理。在业务逻辑层,在联机会话的持续时间内,用户的账户数据在内存中以XMLD0M形式表示,在表示层,所有给用户的信息首先都封装成XML数据,然后用服务器或者客户机附带的XSLT转换,根据浏览器的性能将XML数据转换为OTL在前端显示。 在数据层,我们面临的第一个的问题就是如何统一认识将要采用的XML数据的元素。刚开始是由一个人来定义XML数据的元素,但是后来发现,这样定义处理的XML元素很难获得别人的认同,并且対于不同的商家,所定义的XML元素不具有代表性。于是,在争取到领导的支持后,把以前的XML元素设计推倒重来,而且借鉴了国外关于类似设计所采用的域分析的方法,该方法就是一个用于确定网上商城这个域的术语,范围,共性和变性的过程。就这 样为了寻求一个统一的XML元素的定义,我们成立了一个小组来进行的网上商城的域分析,这个小组有商家代表,数据库设计员,参与多个项目的有丰富经验的程序员和一个专门指导该组域分析的大学专家组成。 在小组会议的开始,我们首先达成一个共识,那就是需要采用一致标准术语来避免交流中产生的误解。于是,我们在刚开始的一周内先确定的关于网上商城的一下公用术语,比如store (商城),shop (店面),ware (商品)等,作为XML最基本的兀素。 在小组讨论的过程中,有成员建议対于域分析,分多个阶段进行,每个阶段提交域分析报吿,比如第一阶段的域分析报吿主要为标准术语以及各个商家信息共性和可变性的表格,第二阶段的域分析报吿,対于域分析中的商家可变性的东西进行详细说明。我们采纳这个建议,获得了很好的效果。就这样,通过3周的域分析,我们小组最终提交一份完整的关于XML网上商城元素的详细表格,由于这些XML元素是由各个部分和商家代表讨论处理的,所以很快被整个项目组成员所接收,并且这些XML元素在后来的开发中证明是非常完整,能够清楚地反映数据的结构,大大提高了整个的系统的开发效率。 在业务逻辑层,由于所有数据库的信息都被转换为XML数据结构,所以在处理数据库信息的时候还必须対XML数据进行XML语法分析,并且将分析出来的结果送往程序。在这儿我们考虑采用XML DON (文档対象模型)来保存这些语法分析出来的XML数据。比如在联机会话的持续时间内,一个用户的帐户数据首先从传统的关系型数据库中读取出来,转换为XML数据结果,并且通过一个XML语法分析器,将XML数据转换成为DOM対象保存在内存中,程序通过Java的DOM API访问这些対象。在这儿为了更好地选择处理XML的技术和方法,我还比较其他两种分析XML数据并且保存的方法。 比较了几种方法,发现DOM有个缺点就是当它保持的数据非常多的时候,将大量占用内存的存储空间。但是,使用DOM API也有一个明显的好处就是简单,它可以通过Java程序直接使用一些方法调用DON树上的数据。为此在设计的时候,尽可能地重复调用已经存储在内存中的DOM対象上面的数据,避免対于相同的数据有多个DOM対象存在。在编码过程中面临的问题不是很多,关键是让程序员熟悉DOM API的各种调用方法。 在表示层,考虑到将大量的运算负荷分布在用户端,既用户可以根据自己的需求选择或者制订不同的应用程序以处理数据,我们设计把所有给用户的信息首先都封装成XML数据,然后用服务器或者客户机附带的的XSLT转换,根据浏览器的性能将XML数据转换为OTL在前端显示。这样的话,服务器只需要准备一次的Web内容,尽可能完善,准确地将数据封装到XML文件中,而XML的自解释性可以使得用户端在接收到XML文件的同时也理解数据的逻辑结构和含义,再通过转换程序,XML可转换为用户所需要的个性的多样的HTML显示方式。在设计中我们所选取的XSLT是一种用于操作XML文档的高级语言,就像SQL是操作关系表的高级语言一样。 一个XSLT规范本身就是一个XML文档,我们通过它的规范,描述出各个用户可以选择的各个OTL显示模板,这样客户端程序只需选择好模板,再加上接收到的XML数据文件,就可以方便地生成自己个性化的HTML文件,并且在浏览器中显示出来。当然在开发中遇到了不少问题,首先由于XSLT是一门起点比较高的语言,也比较烦琐,拿握起来比较慢,使得対程序员的要求比较高。这样导致使用XSLT语言编写的HTML文件的模板过于冗长,作为设计师我一方面是希望模板程序尽可能地包含OTL页面所有的功能和美观,一方面又希望模板程序尽可能地短少,简洁,便于修改。 为了达到两种选择之间的平衡,以达到最佳效果,我対于基本模板的设计,采用有经验的程序员进行设计,并且要求尽可能多地写全文档,并且频繁地开展小组会议,対页面设计和美工人员详细讲述模板各个部分和功能。 在Internet平台上采用XML技术,明显的效果之一是対于不同数据库的支持,通过将各种数据转换为XML文件,可以实行了数据间的转换,共享和处理。效果二是支持了用户的个性化服务,支持用户在不同的客户端可以个性地选择显示界面。 由于HTML在许多复杂的Web应用中遇到了问题,为了彻底解决这些问题,必须采用功能强大的XML来代替OTL作为Web页面的书写’工具,而XML的厂泛使用,必定能够推动Web的不断发展,开创Web应用的新时代。対于XML技术在Internet平台上的应用,我更关注它的扩展性,既让XML包含更加丰富更完整的数据信息,目前公司所接触的首先是软件模型的交换和模型信息的保存,打算在XMI (XML Metadata Inter charge)展开工作。XMI作为一种试图通过XML语言为程序员和其他用户提供一种交换元数据信息的标准途径,是作为MDA模型驱动的模型交换的基础,是非常具有意义的工作。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    知了一笑
  • 阅读Spring源码:IOC控制反转前的处理

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

    beifengtz
  • Javascript:一个屌丝的逆袭

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

    Linux阅码场
  • JAVA基础复习(重点)

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

    阮键
  • JavaSE笔记

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

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

    aHR0cHM6Ly9tLndjYmNoaW5hLmNvbS9sb2dpbi9vdGhlci1sb2dpbi5odG1s

    咸鱼学Python
  • Spring 应用之工厂设计模式

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

    happyJared
  • 如何写出无法维护的代码

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

    哲洛不闹
  • java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(下)

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

    小菜的不能再菜
  • 【SQL注入】关于报错注入的一些测试

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

    一名白帽的成长史

扫码关注云+社区

领取腾讯云代金券