XML 和 Java 技术: XML 究竟有哪些优势?

来源:百度文库 编辑:神马文学网 时间:2024/04/24 18:32:34
XML 是一种数据交换格式……而不是别的什么

文档选项

将此页作为电子邮件发送

讨论
级别: 初级
Brett McLaughlin (brett@newInstance.com), 作家兼编辑, O'Reilly Media Inc.
2007 年 3 月 26 日
众所周知,XML 仍然是过去十年中出现的最流行的技术之一。但 XML 到底有哪些优势?它可用于配置数据么?可用于数据交换么?可作为数据存储媒介么?XML 到底有哪些用处?本文将提供一些信息供大家思考并鼓励大家分享关于此主题的见解。
XML 不是什么新技术,大多数人都很好地掌握了其运作原理及其使用方法。但是,大家对 XML 的“杀手应用” —— 证明其创建必要的数据格式的最终用法。当您查看本文中它的一些最常见的用法时,您会很快发现,在大量的各种应用程序中,即使是专家对于是否可使用 XML 也莫衷一是。




回页首
XML 的最早的用法之一,并且仍然是最流行的用法之一,就是将其用作一种数据格式存储配置数据。几乎是 XML 一流行,编程人员就开始用它来取代他们专有的配置文件。属性文件、带名称 —— 值对的文本文件、逗号分隔值、专有数据格式 —— 所有这些都被丢弃以符合 XML 文档,包括标记、元素、属性和原文数据。
这种 XML 应用程序的最明显的问题是,根据定义,XML 是一种很冗长的数据格式。换句话说,用 XML 表达一件事情会占用大量空间。例如,以下是一个简单的名称 —— 值对文件片段:
firstName=Brett lastName=McLaughlin email=brett@newInstance.com
将其与 XML 编写的本质相同的数据进行比较:
Brett McLaughlin brett@newInstance.com
为了 XML 的“方便”引入了大量额外的字符。这就意味着为选择使用 XML 技术牺牲了处理速度(读取较少的字符自然花费较少的时间)。
与其他文本格式相比,XML 除了通常要使用额外的字符来表示数据以外,您还需要使用一些软件来处理和读取 XML。虽然可以编写 XML 解析器,但您几乎肯定希望使用各种平台上可用的许多 XML 解析器中的一种。因此您将可能需要向软件资源中添加一到两个库,然后学习使用那些 API。
虽然学习新的 API 没什么坏处,但应意识到,您可能要使用自己编写的新代码替代读入现有原文配置数据的工作代码,使用必须使其在应用程序中可用的附加的库。换句话说,您需要在编译时和运行时使用新代码和附加的依赖项替代工作代码(假定您使用的是编译过的语言,但您应该明白其中的含义)。
问题然后就集中在了代价与价值的对比。使用 XML 配置数据的代价是相当高的;我已提到了冗余性和资源需求,但是还有很多其他缺点。主要的优点 —— 假定您意识到会用 XML 并不算什么优点 —— 是灵活性。如果您已经在使用 XML,或拥有可能使用多种语言的多个应用程序,所有这些程序共享配置数据,则 XML 可能是一种非常可行的配置数据的策略。
虽然存在那个例外,但使用 XML 作为配置数据的格式到底有什么益处?我认为有几个其他的原因,但是我不会告诉您 —— 我希望您能告诉我。查看参考资料 部分,访问 XML 和 Java 技术论坛,然后告诉我。我对于倾听您关于 XML 配置数据的优点的见解非常好奇。




回页首
除配置数据外,使用 XML 来在应用程序的组件和层之间 传输数据也日益流行。在此模式中,应用程序的不同部分使用 XML“语言”进行通信。虽然这比使用 XML 配置数据在技术上更具挑战性,但几乎同样流行,并且这也成为了如 SOAP、数据绑定和 Web 服务等技术的基础。
XML 最常见的用法之一是:作为一种数据格式在同一应用程序的不同部分之间传输信息。这实现起来很容易,因为是由同样的程序员或程序员团队控制发送和接收数据的结束。不幸的是,这也几乎肯定是最坏 的 XML 传输数据的用法。
当您在同一应用程序中发送和接收数据时,增加了同样的系统开销,如配置应用程序的数据部分所讨论的:冗余性、更大的文件和对 XML 解析器库(最低水平的库)的需求。而您实际上从使用 XML 中的获益远不及此。在大多数情况下,一个好得多的解决方案是:将序列化的数据或对象原型发送至您所使用的编程语言。这样处理起来更快,因为传输数据占用的带宽更少而且在接收端解码更加容易。
XML 在此常规领域中的一个更好的用法是:使用 XML 作为数据传输格式在应用程序间传输数据。应用程序中有一个组件可将数据发送至业务伙伴应用程序中的另一个组件。而数据被编码为 XML 格式。
这样做有一些实实在在的优点,因为您无需知道另一个应用程序的编程语言以及数据将如何使用的相关信息。反过来时也是如此;如果要接收数据,您几乎也无需了解发送数据的应用程序的信息。在这种情况下,XML 的冗余性缺点就不如所获得的灵活性那么重要,况且其只需将数据编码为 XML 数据格式而不是要遵循其他公司的编程规范或选择其他技术。
Web 服务、SOAP、WSDL 以及当前正在热议的各种其他专门术语证明了其存在的价值。但是,各种可用的 Web 服务实际上只是应用程序间数据传输的子集。通过某个其他公司或技术提供商提供的组件,您得以在应用程序间发送和接收数据。
惟一实质的区别在于 Web 服务通常要求 您使用 XML。因此问题的实质在于涉及 Web 服务时不是您想不想使用 XML;而是您到底要不要使用 Web 服务。而那就变成了另外一个大得多的问题:权衡使用 Web 服务功能的价值与处理提供程序、提供程序运行速度(与 XML 有关,可能也受带宽、等待时间、特定提供程序以及一些其他因素的影响)和公司声望的代价之间孰轻孰重。换句话说,XML 成为了一个可以忽略的因素,而不是一个控制因素。




回页首


将这篇文章提交到 Digg

发布到 del.icio.us

提交到 Slashdot!

虽然大多数文章为您展示特定问题的具体解决方案,而这篇文章旨在引导您进行思考。在大多数可能的 XML 应用程序中,没有简单的“正确”答案。有时 XML 似乎比其他备用程序好,而有时又几乎肯定不 是这样,但在许多情况下,它只是诸多选择之一。您的任务是仔细思考文中详细介绍的常规应用程序,然后试着为您在自己的业务和项目中遇到的特定问题设计一些应用程序。
我也鼓励您在线查看各种 XML 论坛(参见参考资料 部分中的链接),继续进行这个讨论。我将在 XML 和 Java 技术论坛恭候,希望能激起一些有趣的交谈和辩论。因此仔细思考,然后访问 developerWorks 论坛并发表您的高见。网上见。
学习
您可以参阅本文在 developerWorks 全球网站上的英文原文。
参阅本系列的第 2 部分,本文讨论了数据绑定 API 和几种数据绑定方法的优点。
XML 技术文档库:访问 developerWorks XML 专区,获取大量的技术文章和技巧、教程、标准和 IBM 红皮书。
获得产品和技术
IBM 试用版软件:使用 IBM 试用版软件构建您的下一个开发项目,该软件可直接从 developerWorks 下载获得。
讨论
参与论坛讨论。



Brett McLaughlin 自从 Logo 时代以来一直从事计算机方面的工作。(还记得那个小三角符号么?)最近几年里,他已成为 Java 和 XML 社区中最著名的作家和程序员之一。他曾在 Nextel Communications 从事复杂企业系统的实现;在 Lutris Technologies 进行实际应用服务器的编写;最近他在 O'Reilly Media, Inc. 继续编写和编辑相关书籍。Brett 即将完成的书Head Rush Ajax 将为 Ajax 引入饱受赞誉的创新的Head First 方法。他的上一本书Java 1.5 Tiger: A Developer's Notebook 是第一本可获得的关于最新版本 Java 技术的书籍。而他的名著Java and XML 仍然是在 Java 语言中使用 XML 技术的权威性著作之一。