作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Seva Safris的头像

Seva Safris

Seva是一位拥有20年行业经验的企业和创业老手, 加州大学伯克利分校EECS和MSE专业的毕业生.

Expertise

Previously At

Electronic Arts
Share

从桌面到网页和移动设备, 我们今天使用的几乎所有计算机应用程序都依赖于两种主要消息标准之一:JSON和XML. 今天,JSON是最广泛使用的格式,但它在最近五年内才超过XML. 快速在线搜索“XML vs . XML”. JSON”将带来无数比较这两个标准的文章和博客文章, 并逐渐扩大了对JSON的简单性的赞扬和对XML冗长性的批评. 许多文章坚持认为JSON优于XML,因为它具有简洁的语义,并认为XML是过去低效且令人困惑的标准. 乍一看,JSON似乎是最流行的——所以JSON就是比XML好? JSON vs . JSON之争. 从表面上看,XML“可能会变成JSON,但从深度上看,事情远不止这么简单.

在本文的第1部分中,我们将:

  1. 仔细看看web的历史,就会发现XML和JSON的最初目的.
  2. 考虑近年来软件趋势的演变,以确定为什么JSON比XML更受欢迎.

JSON和XML的历史

揭示JSON比XML流行的原因, 以及JSON相对于XML的优势, 让我们来探索一下web的历史以及它是如何从web 1进化而来的.0 to Web 2.0 .影响发展趋势.

The Web 1.0: HTML

20世纪90年代初是Web 1的曙光.0. HTML于1991年推出,并被大学广泛采用, businesses, 和政府机构作为网络语言. HTML来自SGML,即IBM在20世纪70年代发明的“标准通用标记语言”. 除了质量 adoption, HTML saw mass adaptation-扩展被嵌入以支持多媒体、动画、在线应用程序、电子商务等. 作为SGML的衍生物, HTML缺乏严格的规范来限制公司自由扩展它以满足超出原始概念的需求. 网景(Netscape)和微软(Microsoft)对最流行网络浏览器的争夺取得了迅速进展, 但它也导致了标准的无情分裂. 激烈的竞争导致了“分歧灾难”,因为两家公司对HTML的扩展导致浏览器支持他们自己独特的HTML版本. 当开发人员努力为浏览器编写可互操作的代码时,这种分歧灾难成为web应用程序的一个巨大问题.

The Web 1.1: XML + HTML = XHTML

在90年代末, 包括Jon Bosak在内的一群人, Tim Bray, James Clark和其他人提出了XML:“可扩展标记语言”.” Like SGML, XML本身并不是一种标记语言, 而是标记语言定义的规范. XML是从sgml进化而来的,旨在提供一种定义的方法, and to enforce, 结构化内容. 它被认为是“计算领域的圣杯”,1 XML语言致力于“解决不同系统之间通用数据交换的问题”(Dr . XML). 查尔斯·戈德法布)2. 代替持续的HTML碎片化, 万维网委员会(W3C)的成立是为了促进业界在采用万维网新标准方面的兼容性和协议.3 W3C开始着手将HTML重塑为XML应用程序,结果就是XHTML.

XHTML是引起人们对XML关注的一个重大创举, 但这只是XML的一小部分.

XML为业界提供了一种指定的方法, 具有严格的语义, 任何应用程序的自定义标记语言. 关键字是“严格语义”,XML定义了一种标准,可以断言任何XML文档中数据的完整性, 任何XML子语言. 对于开发分布式企业应用程序的软件公司,这些应用程序与不同的系统接口, 能够断言其数据完整性的标记语言非常重要. 通过用XML定义结构化内容, 公司利用该技术的特性与任何平台进行互操作, 强制每个数据交换的数据完整性, 系统地降低他们系统的软件风险. For the industry, XML提供了一种存储技术, communicate, 验证任何类型的数据, 以任何平台上的应用程序都可以轻松读取和处理的形式. 对于HTML, XML承诺解决“分歧灾难”.”

Java and .NET

21世纪初,互联网由两家公司统治:Sun和微软. 当时,编程语言的格局严重地向服务器端倾斜. web应用程序的通用架构依赖于服务器在后端呈现HTML页面,并将其交付给浏览器. 这种方法突出了后端技术, 这反过来又普及了领先的后端平台:Java和c#.NET. 由太阳微系统公司开发, Java引领了新一代面向对象编程语言,它以其新颖的“一次编写,随处运行”解决了跨架构问题。4 approach. 微软紧随其后 .NET, C#, 以及公共语言运行时(CLR),并将目光投向XML,将其作为解决数据互操作性难题的首选方法. 微软成为XML的最大倡导者, 该公司选择XML作为其重要的组成部分 .NET initiative. 作为“XML web服务的平台”,5 .NET applications 是为使用XML与其他平台通信而设计的吗. 被选为微软的数据交换标准, XML被集成到其旗舰服务器产品中, 如SQL Server和Exchange.

The Web 1.2: AJAX

向浏览器交付预渲染的HTML页面是不可伸缩的, 网络需要另一种选择. 每个用户操作都需要从服务器加载一个新的页面, 随着越来越多的人使用网络,进程负载和带宽消耗成为一个问题.

Netscape和Microsoft尝试用异步内容交付(ActiveX和JavaScript)来解决这个问题. 1998年,Microsoft Outlook Web Access团队开发了ActiveX背后的概念6,后来被Mozilla、Safari、Opera和其他浏览器用JavaScript实现 XMLHttpRequest object.

AJAX诞生于微软的ActiveX和网景的JavaScript.

术语ajax——“异步JavaScript和XML”的缩写——代表了一系列广泛的web技术,这些技术可用于实现在后台与服务器通信的web应用程序,而无需重新加载页面. 在创造AJAX这个术语的文章中,7 8 Jesse James Garrett概述了主要概念:

  1. 用于表示的HTML(或XHTML)和CSS.
  2. 用于动态显示数据和与数据交互的文档对象模型(DOM).
  3. XML用于数据交换,XSLT用于数据操作.
  4. The XMLHttpRequest 对象用于异步通信。.
  5. JavaScript将这些技术结合在一起.

异步内容交付被证明可以减少服务器负载并节省大量带宽, AJAX改变了游戏规则. 介绍 XMLHttpRequest 浏览器允许开发人员在前端实现更复杂的逻辑. 谷歌进行了广泛的标准兼容部署, 2004年在Gmail和2005年在谷歌地图上使用了跨浏览器AJAX.9 2004年10月,Kayak上市.com的公开测试版是AJAX在电子商务中的首次大规模应用.10

The Web 2.0:单页应用程序

采用AJAX作为web应用程序的可伸缩架构导致了web 2的诞生.0:单页应用程序(SPA).11 而不是为每个用户交互重新加载整个页面, spa在浏览器中动态重写当前页面. 此外,还可以大大减少服务器负载和带宽消耗, 由于用户交互过程中的无缝和不间断体验,SPA方法允许web应用程序类似于桌面应用程序.

2002年4月,Stuart Morris在slashdotslash上写了最早的spa之一.com12, 同年晚些时候, Lucas Birdeau, Kevin Hakman, Michael Peachey, Evan Yeh在美国专利8中描述了一个单页应用程序的实现,136,109.13 该专利描述了使用JavaScript来显示用户界面的web浏览器, 运行应用程序逻辑, 并与web服务器通信.

Google’s Gmail, Google Maps, Kayak的公测版开启了web应用开发的新时代. 启用了AJAX的浏览器使开发人员能够编写 丰富的web应用程序. JavaScript的简单语义使得任何水平的程序员都可以开发应用程序. 进入软件开发的门槛大大降低了, 世界各地的个人开发人员开始贡献他们自己的库和框架. 像jQuery这样的流行库, 哪些规范了不同厂商的浏览器之间的AJAX行为, 进一步推动了AJAX革命.

The Rise of JSON

In April 2001, 道格拉斯·克罗克福德(Douglas Crockford)和奇普·晨星(Chip Morningstar)在晨星位于湾区车库的一台电脑上发送了第一条JSON消息. Crockford和Morningstar早在“AJAX”这个术语出现之前就在尝试构建AJAX应用程序, 但是浏览器对他们试图实现的目标的支持并不好. 他们希望在页面加载后将数据传递给应用程序, 但还没有找到一种方法来允许它在所有浏览器上工作.

In 2001, AJAX的开发才刚刚开始, 那时还没有一个可互操作的 XMLHttpRequest 对象在Internet Explorer 5和Netscape 4中. 因此,Crockford和Morningstar使用了一种不同的方法,在两种浏览器中都有效.

第一个JSON消息是这样的:


该消息实际上是一个包含一些JavaScript的HTML文档, 而且只有一小部分信息类似于我们今天所知道的JSON. Crockford和Morningstar能够通过指向