在互联网出现前,任何为慢速调制解调器和昂贵线路编写通信程序的人在一看到XML后,第一个反映就是觉得它的格式太浪费了。诚然,我们很难节省字节来优化XML。传输5000个字节的数据很可能只有500字节的真实内容,而其它的一点用也没有。”Fast Infoset”标准创建了一种压缩编码方法来传输XML Information Set,显著节省了带宽和处理能力。
什么是XML Information Set? 尽管很多人都在迟疑是不是需要另一种XML标准,但W3C却创建了”XML Information Set”或者叫”Infoset……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在互联网出现前,任何为慢速调制解调器和昂贵线路编写通信程序的人在一看到XML后,第一个反映就是觉得它的格式太浪费了。诚然,我们很难节省字节来优化XML。传输5000个字节的数据很可能只有500字节的真实内容,而其它的一点用也没有。"Fast Infoset"标准创建了一种压缩编码方法来传输XML Information Set,显著节省了带宽和处理能力。
什么是XML Information Set?
尽管很多人都在迟疑是不是需要另一种XML标准,但W3C却创建了"XML Information Set"或者叫"Infoset"推荐书。该说明书试图在更抽象的级别标准化XML文档各部分的所有定义,而不是用文字语法。
所有处理XML的说明书都可以用Infoset定义,并且保证它们都在说同一件事。为了避免使用类似在专门的XML处理API中出现"Element"等术语,该说明书改为称呼为"Information Items"。它识别十一种不同类型的信息项。任何能处理所有的项的XML文档被认为拥有完整的Infoset。
Fast Infoset标准
Fast Infoset的编码标准由International Telecommunications union (ITU)和International Organization for Standardization (ISO)负责,分别叫做"ITU-T Rec. X.891"和ISO/IEC 24824-1。该标准发表在被广泛使用的电信标准Abstract Syntax Notation One (ASN.1)上。
Fast Infoset的替代方法
由于XML冗余的性质,也就不奇怪很多人尝试为更有效的传输而压缩文档了。广为人知的ZIP和GZIP编码是很好的技术。在客户端和服务器端为数据流执行zip压缩和解压缩的过滤器很容易安装,因为zip压缩只知道字符序列,它不能利用XML文档的正规结构,还得为解压缩而消耗处理能力。
Fast Infoset的Sun的Java实现
Sun的Java Web Service Developers Pack (JWSDP)中实现了Fast Infoset,而开源的Glassfish项目则实现了第二版。它仍然被认为是一种不成熟的技术,并未发挥全部的潜力。例如,它不能压缩大块文字,也不能支持Fast Infoset说明书中的其它高级特性。
JWSDP 2.0版本提供了一种协商机制,通过它Web服务客户端可以在初次与服务器联系时使用标准HTTP头"Accept"和"Content-Type",来指明自己可以接受Fast Infoset编码的数据。如果Web服务端已经被配置合适的话,那么以后的会话将都会使用Fast Infoset编码。
Fast Infoset实验
为了有所了解,我们使用Fast Infoset格式的XML文档,普通文本文档和zip格式的文档来做对比。我执行了一些计时实验。测试XML文档是一套XML格式的测试问题,大多数内容都是文本元素且没有命名空间。该文档比我以前见到的其它Fast Infoset测试对象都要大。
我从Sun的Glassfish项目得到最新的Fast Infoset工具集,创建了一个Fast Infoset编码版本的文档,然后用WinZip创建了一个zip版本的。该工具集提供选择Document Object Model (DOM), SAX和StAX三种风格的解析方式。StAX是XML的Streaming API,它是一个“拉”方式的API,很多程序员都觉得它和SAX一起很好用。我只对DOM创建解析器进行了计时,因为它经常在SOAP Web服务中被使用。
对Fast Infoset格式的实验显示,所有XML标签都被压缩成编码,而文本内容还是文字。因此,我又用zip方式压缩了Fast Infoset文件。以下是结果文件的大小:
Plain XML text file 769,396 bytes
Zipped XML text file 68,715
Fast Infoset formatted 548,669
Zipped Fast Infoset 71,929
为了从影响实际Web服务的网络延迟方面来判断不同格式的效果,我写了一个测试程序来计算从磁盘文件上创建标准Java Document对象所花的时间。我事先进行了JVM的预热,并在计时部分外进行了垃圾收集。该Java标准库被用来在读zip文件时创建一个到解析器的输入流。为了计时,我使用了JAMon开源性能检测工具集(强烈推荐)。以下时间是10次重复实验的平均值,单位微秒。
Parse plain XML text file 62.8 msec
Parse zipped XML text file 70.4
Parse Fast Infoset formatted 31.3
Parse zipped Fast Infoset 37.4
我得出结论,Fast Infoset编码显著降低了解析XML文档的时间,但只能稍微降低文本大小,而zip编码则能很好的以一定处理时间代价降低文本大小。我认为,我们可以随着此工具被使用得更广泛而更好的在Web服务中使用Fast Infoset。
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
Google App Engine for Java 对于目前中国需要学习吗?