摘要
XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了 Web
services 的同义词。然而,由于 Ajax 和 REST 技术的出现影响了应用程序架构,这迫使人们开始
寻求`XML 的替代品,如:JavaScript Object Notation(JSON)。
JSON 作为一种更轻、更友好的 Web services 客户端的格式(多采用浏览器的形式或访问
REST 风格 Web 服务的 Ajax 应用程序的形式)引起了 Web 服务供应商的注意。
本文将阐述 JSON 在 Web services 设计中备受推崇的原因,以及它作为 XML 替代方案的主要
优势和局限性。文中还会深入探讨:随着相应的 Web 服务客户端选择使用 JSON,如何才能便捷
地在 Java Web services 中生成 JSON 输出。
XML 的十字路口: 浏览器和 Ajax
XML 设计原理已经发布了将近十年。时至今日,这种标记语言已经在广阔的软件应用领域中占
据了主导地位。从 Java、.NET 等主流平台中的配置和部署描述符到应用集成场景中更复杂的应用,
XML 与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位。但即便最著名的 XML 权
威也不得不承认:在某些环境中,XML 的使用已经超出了它自身能力的极限。
围绕 Ajax 原理构建的那些 Web 应用程序最能说明 XML 的生存能力,从这一点来看,一种新
的有效负载格式的发展壮大也得益于 XML。这种新的有效负载格式就是 JavaScript Object
Notation (JSON)。在探索这种新的标记语言的复杂性之前,首先来分析一下在这种独特的设计形式
中,XML 具有哪些局限性。
Ajax 建立了一个用于从远程 Web services 发送和接收数据的独立信道,从而允许 Web 程序执
行信道外(out-of-band)客户端/服务器调用。通俗地说,Ajax 程序中的更新和导航序列在典型的
客户端/服务器环境之外完成,在后台(即信道外)接受到信息后,必须进行一次完整的屏幕刷新。
更多背景信息,请参阅 David Teare 的 Ajax 简介(Dev2Dev)。
这些应用程序更新通常是通过 REST 风格(RESTful)Web services 获得的,一旦被用户的浏
览器接收到,就需要整合到 HTML 页面的总体布局之中,这正是 XML 发挥强大力量的场合。尽管
近年来,脚本语言支持和插件支持已使大多数主流浏览器的功能得到了强化,但许多编程任务依然
难于开展,其中之一就是操纵或处理文本,这通常是使用 DOM 实现的。
采用 DOM 的复杂性源于其基于函数的根,这使得对数据树的简单修改或访问都需要进行无数
次方法调用。此外,众所周知,DOM 在各种浏览器中的实现细节不尽相同,这一过程将带来极为
复杂的编程模式,其跨浏览器兼容性出现问题的可能性极大。接下来的问题显而易见,那就是:如
何使一种标记语言轻松集成到 HTML 页面中以满足 Ajax 的要求?