在主流新闻中很少技术引起可扩展标记语言那么大混乱。尽管XML是一种基础的、可以利用的技术,但是其趋势却是与其它的技术方案一起组合使用,并且弄不清XML与其它技术(通常是专利方案)的能力差异。下面将要讨论的是关于XML是什么以及为什么预计它会有很长的技术生命周期的等核心内容。
可扩展标记语言(XML)
创造XML的目的是终结特定应用的程序数据的交换问题。XML不是让两个或多个应用程序来决定它们之间使用什么样的格式来进行数据交换、在每个应用程序中使用什么样的代码逻辑按约定的格式读取和写入数据,而是提供与应用程序无关的方式描述数据的方法。XML使用标记(tags)来包含应用程序的数据并描述数据的信息。XML是一种环球网联盟的标准,并且被其它的大量标准使用。
XML的一个优点是它解决了先前的开发中的一个实际问题:为每个与数据集交互操作的应用程序编写导入和导出程序是昂贵的和脆弱的。每次数据改变的时候,必须修改与该数据交互操作的每个应用程序以了解新的数据格式,即使那种改变对于不同的应用程序使用的数据元素几乎没有影响。在没有确保所有的应用程序都升级到可以处理某种变化的之前,应用程序不能够扩展已有的数据格式。从本质上说,数据的设计与负责读取和写入数据的应用程序是紧密关联的。这给共享数据的所有应用程序(趋向于包含多数环境中的很多应用程序)增加了很大的成本。XML提供的不依赖于使用数据的应用程序的数据建模的简单方式是革命性的。
XML最终还是一种数据格式。原始的XML 1.0规范十分简明,主要定义了使用标记来描述数据元素的方法。这些标记都是用户定义的,有下面一些特性:
结构化的(Structured)。XML使用标记来描述数据,使得数据文件可以自我描述(self-describing)。读取和处理XML文档的程序可以轻易地检测到某个文档是否包含特定的数据元素。同样,让程序检测某个XML文档是否被切断了或者格式不完整都很很容易的。
灵活的(Flexible)。对于任何数据集合,XML都提供了表现数据的几种方法。灵活性有利有弊:它允许开发者为如何表现某个XML文件中的数据进行恰当的选择;它也允许开发者作出数据表现的不恰当或不明智的选择。
验证的(Validated)。文档类型描述(Document Type Description,DTD)或XML大纲(Schema)让开发者能够定义指导数据表现的规则。XML分析器被广泛地用于根据大纲验证文档的正确性。
可适应的(Adaptable)。生成XML文件的应用程序、操作系统、编程语言和数据管理系统都可能改变,然而XML文件仍然是可以读取的。
标准的(Standard)。使用XML不需要许可,任何公司都不能改变它,使它与其它应用程序不兼容。
可读的(Readable)。XML文件可以被编辑、修改并保存为纯文本。
举个例子,建立一个描述冰淇淋口味的XML文档就十分简单,先决定要描述什么,接着记载特定的实例就行了。
为什么这种技术如此强大?与其它的数据格式不同,即使这么简单的XML文档在二十年、五十年甚至成百上千年之后都能够被理解。十年前使用的数据格式中只有很少的可以被当前的应用程序理解了。而且如果数据可以被理解,那么它就能够被利用/处理。此外,有了XML分析器和其它补充的技术,不同的XML格式(和其它格式)之间的转换处理工作可以自动化进行。
但是,这种灵活性也是有交换条件的。XML是一种描述数据的冗长的方法。在存储和传输同样的信息内容的时候,很少数据格式需要的空间有XML文档需要的大。其结果是,当性能和存储空间是约束条件的时候,其它的数据格式也是合乎需要的。当然,在目前硬件处理和传输速度快速发展的情形下,XML文件的大小通常仅仅是一种次要的考虑因素。在管理大量XML文档时会出现较大的问题。搜索大量的XML文档通常是有问题的。但是,XML文档索引系统、甚至于XML特定的硬件已经在帮助我们减轻搜索大量的XML文档所遇到的问题了。有些数据库厂商也正在自己的数据库中实现XML类型以处理存储和搜索的问题;例如,类似的增强功能在XML数据库产品Oracle 9i中是可以使用的。其它的大量公司也开发了XML特定的数据库,它们带有用于提高搜索性能和高效存储XML内容的一些定制的内容。最后,要清楚尽管我提到的很多XML的优点确实是可能的,但是它们中很少是自动的。XML本身的使用不是独立地完成大量的事务,而是需要很多的想法、计划和设计来把XML与其它技术一起高效率地使用。
Sun公司的J2EE与微软的.Net
首先,我介绍行业中最主要的两种企业开发平台(太阳微系统公司的Java 2企业版和微软的.Net)的基本信息。J2EE是以Java为中心的操作环境,它正在努力变成的平台无关的。这意味着J2EE开发者都在Java编程语言中工作;但是该语言本身对于所有主要的硬件环境和软件操作系统来说都是很轻便的。与此对照的是,微软的.Net环境支持多种编程语言,但是目前聚焦于运行在微软Windows操作系统上的开发环境。此外,J2EE根本上是一种由大量不同的厂商实现的一个规范集合。微软的.Net是作为基于微软的知识产权专利的一套产品销售的。策略上的基本差异造成了软件行业的很多有趣的分化。Sun和一些主要的玩家,例如IBM和Oracle投入和大量的资金,聚集了主要的厂商支持J2EE标准。它们中的大多数都把J2EE集成到自己的旗舰产品线中,并且很多厂商都有自己的J2EE实现。在另一个阵营,微软用.Net促进自己与已有的厂商关系,引起企业软件开发中支持.Net解决方案的厂商范围的快速增长。他们自动的把基本的.Net核心服务集合让给微软,并朝着从基于核心下部构造的增值软件中获利的方向来建立业务模型。
J2EE环境要求所有的组件都使用Java编程语言编写。Java虚拟机(JVM)把Java编写的程序编译为特定的Java字节码(byte code),JVM在运行时执行编译的字节码。这与.Net的方法显著不同,.Net使用通用语言运行时(CLR)引擎把大量的编程语言编译成真正的语言无关的中间代码。CLR允许开发者使用.Net开发工具支持的任何编程语言,并且定义了从其它任何受到支持的语言中轻易地调用某个语言编写的组件的机制。从某种意义上讲这允许多种编程语言开发,它在引入到.Net之前还没有被广泛地接受。审查委员会仍然没有考虑行业中到底多需要这种能力,但是重复使用大量的已有的代码而不管它的实现语言的呼吁的确出现了。
在完备性方面,J2EE环境有更长的历史,并且在它的开发和演化有更多的行业参与。J2EE已经被成地部署在大量的最有挑战意义的垂直行业(例如财政服务和通讯)的重要事务应用程序中了。而且,由于J2EE解决方案来自很多不同的厂商,在不同的实现、工具集和增值产品方面都有更大的多样性。不幸的是,作为应付大量的厂商解决方案的结果,我们必须小心处理产品的兼容性问题,这个问题在单个厂商的解决方案(例如.Net)中要少得多。
总之,J2EE为富有经验的开发小组提供了很多优点,因为J2EE提供了比.Net更大的编程灵活性,并且能够开发性能很好、高度定制的应用程序。但是,这种更高的灵活性在某些方面(例如内存和资源管理)也更容易引入严重的错误。最初在.Net中建立多层应用程序并运行要容易得多,但是J2EE赋予富有经验的开发者开发强大的应用程序的更大的自由性。.Net架构更多地聚焦于使用的简单,因此它提供的对更低层状态管理和频繁使用的缓冲技术的访问权并没有J2EE应用程序开发提供的那么大。
Web服务
XML是一种数据格式,它允许数据在不同的计算环境之间交换。Web服务是重要的,因为它们把Internet作为数据传输层来使用,允许我们共享分布式程序。通过使用Internet,这些程序对于潜在的数百万的用户都是普遍可用的,并且可以作为更大的分布式应用程序的构建模块。Web服务可以在任何计算平台上使用任何语言实现,接下来使用标准的Web服务描述语言(WSDL, Web服务专用的一种XML大纲)把该服务的接口记录在XML中。Web服务的客户端可以使用标准的简单对象访问协议(SOAP,它提供了表现Web服务的接口以及通过HTTP调用的XML格式)调用WSDL。由于HTTP是Internet的标准协议,Web服务可以在已有的Internet下部构造上配置和使用。Web服务提供程序也可以在普遍的描述、发现和集成(UDDI)登记中注册它们的Web服务,这样就能让客户端动态地搜索、发现和访问它们的Web服务了。
允许建立和使用Web服务的基本技术都符合行业标准,并且同时受到微软.Net和Sun的J2EE平台的支持。但是,与安全性和电子商务相关的增值服务都正在进行中。Web服务的潜能不可能被完全了解,直到这些关键的技术都达成一致并在整个行业中被广泛地采用。
本文地址:http://com.8s8s.com/it/it24335.htm