![](/Editor/FCKeditor/editor/images/smiley/msn/tounge_smile.gif)
zz 如下:
众所周知,XML 仍然是过去十年中出现的最流行的技术之一。但 XML 到底有哪些优势?它可用于配置数据么?可用于数据交换么?可作为数据存储媒介么?XML 到底有哪些用处?本文将提供一些信息供大家思考并鼓励大家分享关于此主题的见解。(zz from http://www.ibm.com/developerworks/cn/xml/x-xjavaforum1.html?S_TACT=105AGX52&S_CMP=techcsdn)
XML 不是什么新技术,大多数人都很好地掌握了其运作原理及其使用方法。但是,大家对 XML 的“杀手应用” —— 证明其创建必要的数据格式的最终用法。当您查看本文中它的一些最常见的用法时,您会很快发现,在大量的各种应用程序中,即使是专家对于是否可使用 XML 也莫衷一是。
XML 配置数据XML 的最早的用法之一,并且仍然是最流行的用法之一,就是将其用作一种数据格式存储配置数据。几乎是 XML 一流行,编程人员就开始用它来取代他们专有的配置文件。属性文件、带名称 —— 值对的文本文件、逗号分隔值、专有数据格式 —— 所有这些都被丢弃以符合 XML 文档,包括标记、元素、属性和原文数据。
这种 XML 应用程序的最明显的问题是,根据定义,XML 是一种很冗长的数据格式。换句话说,用 XML 表达一件事情会占用大量空间。例如,以下是一个简单的名称 —— 值对文件片段:
firstName=Brett |
将其与 XML 编写的本质相同的数据进行比较:
<?xml version="1.0"?> |
为了 XML 的“方便”引入了大量额外的字符。这就意味着为选择使用 XML 技术牺牲了处理速度(读取较少的字符自然花费较少的时间)。
与其他文本格式相比,XML 除了通常要使用额外的字符来表示数据以外,您还需要使用一些软件来处理和读取 XML。虽然可以编写 XML 解析器,但您几乎肯定希望使用各种平台上可用的许多 XML 解析器中的一种。因此您将可能需要向软件资源中添加一到两个库,然后学习使用那些 API。
虽然学习新的 API 没什么坏处,但应意识到,您可能要使用自己编写的新代码替代读入现有原文配置数据的工作代码,使用必须使其在应用程序中可用的附加的库。换句话说,您需要 在编译时和运行时使用新代码和附加的依赖项替代工作代码(假定您使用的是编译过的语言,但您应该明白其中的含义)。
问题然后就集中在了代价与价值的对比。使用 XML 配置数据的代价是相当高的;我已提到了冗余性和资源需求,但是还有很多其他缺点。主要的优点 —— 假定您意识到会用 XML 并不算什么优点 —— 是灵活性。如果您已经在使用 XML,或拥有可能使用多种语言的多个应用程序,所有这些程序共享配置数据,则 XML 可能是一种非常可行的配置数据的策略。
虽然存在那个例外,但使用 XML 作为配置数据的格式到底有什么益处?我认为有几个其他的原因,但是我不会告诉您 —— 我希望您能告诉我。查看 参考资料 部分,访问 XML 和 Java 技术论坛,然后告诉我。我对于倾听您关于 XML 配置数据的优点的见解非常好奇。
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 成为了一个可以忽略的因素,而不是一个控制因素。
结束语![]() |
虽然大多数文章为您展示特定问题的具体解决方案,而这篇文章旨在引导您进行思考。在大多数可能的 XML 应用程序中,没有简单的“正确”答案。有时 XML 似乎比其他备用程序好,而有时又几乎肯定不 是这样,但在许多情况下,它只是诸多选择之一。您的任务是仔细思考文中详细介绍的常规应用程序,然后试着为您在自己的业务和项目中遇到的特定问题设计一些应用程序。