基于不同数据传输格式对Ajax实时性响应影响的研究

2011-03-16 07:42王鹏吴晓东杨华民
关键词:数据格式服务器端客户端

王鹏,吴晓东,杨华民

(长春理工大学 计算机科学技术学院,长春 130022)

Ajax(Asynchronous JavaScript and XML)作为Web2.0核心技术被越来越多地使用到Web应用中。Ajax 由 HTML、JavaScript、DHTML(Dynamical Hypertext Markup Language)和 DOM[1](Document Object Model)组成,它使用客户端脚本异步传输、局部刷新技术很大程度上降低了服务器端的压力。在一些实际项目应用中,如地理信息系统,常常需要大量的数据交换,使用不同的数据格式,客户和服务器端的响应会有很大不同。常见的数据交换格式 有 HTML、XML、JSON、CSV(Comma Separated Values)、GZIP五种。其中,HTML传输是最简单的形式,但缺乏一定的灵活性。XML作为一种通用的标记语言,具有跨平台、跨语言的优势。然而在实际的应用中,XML的解析工作会让开发效率低下。JSON作为为新生代的纯文本数据格式,在Ajax数据交换中有着得天独厚的应用优势。在不考虑网络传输的情况下,解析不同数据格式的对象有着明显的区别。本文主要从HTML、XML、JSON三种常用的数据交换格式探究三者在对象解析方面的区别,及对实时数据传输产生的影响。

1 HTML、XML、JSON 简介

HTML(HypertextMark-upLanguage)即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。HTML文本是由 HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。在Ajax轻量级应用中,通常以HTML片段的形式实现客户端和服务器端的简单数据交换。

XML[2](Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立服务器端使用数据格式。一个XML文档最基本的构成包括:声明,处理指令(可选)和元素,所有xml文档都从一个根节点开始,根节点包含了一个根元素,其他元素必须包含在根元素中,嵌套在内的为子元素,子元素还可以包含子元素,数据既可以存在子元素中也可以存在元素的属性中。

和XML一样,JSON[3]也是基于纯文本的数据格式。由于JSON是为JavaScript准备的,因此,JSON的数据格式非常简单,可以用JSON传输一个简单的String,Number或Boolean类型变量,也可以传输一个数组,或者一个复杂的Object对象。在实际应用中通常以Object对象进行数据交换,而Object对象在 JSON中是用{}包含一系列无序的Key-Value键值对表现的。

2 影响实时响应的因素

影响Ajax应用的实时响应因素包括:

1.网络传输环境

2.不同数据格式的传输速度

3.不同数据格式的解析速度

由于Ajax在异步传输、局部刷新方面的特点,在网络传输环境一定的情况下,不同数据格式的传输速度差别不大,但是计算机在对不用数据格式对象的解析上所耗费的时间是明显的。

3 数据格式比较

下面以服务器端实时向客户端发送简单的地图地理信息[4]为例来说明相同信息在使用不同数据格式时的表现形式。服务器端向客户端返回的信息包括区域、经度、纬度信息。

3.1 基于HTML的信息传递数据格式

使用HTML进行传输需要对以上坐标信息按一定规则连成文本信息,在服务器端对信息编码完成后,进而传递至客户端。在客户端再按该规则将文本还原。例如,需要传递的坐标信息为{所在区域:长春;经度:125.29889;纬度:43.81185}。传递的 HTML片段可确定为"#长春%125.29889%43.81185#",在连接串中使用约定符号组织传递的数据信息。在客户端端按所在区域、经度、纬度进行文本还原,实时显示地理信息。

使用HTML片段,内容简洁,不会浪费过多的带宽资源,但是需要在服务器端或客户端以字符串形式构造出HTML文本,不利于编程,也不容易调试和维护。特别在传输的文本的数据结构的复杂的情况下,调试维护的难度会凸显出来。

3.2 基于XML的信息传递数据格式

XML的非空标记必须由开始标记和结束标记组成,两者之间是标记的内容。开始标记以"<"开始,以">"结束,中间是标记名称,结束标记以""结束,中间是标记名称。在开始标记和结束标记之间即为该标记的值。将以上的HTML片段改写成XML形式,即:

其中为根节点,在根节点以下为子节点,在这些节点中存储着需要保存的坐标信息。

3.3 基于JSON的信息传递数据格式

JSON包含简单的数值类型,诸如字符串(string)、数值(number)等,但使用这些简单数据类型定义复杂格式的数据无疑是困难的,在实际应用中以JSON的对象(Object)格式进行定义数据,以上的XML信息对应转换为JSON格式即为[5]:

以上 coordinate即为 JSON的一个对象(Object),JSON 在表示数据时将属性和值以":"分开,同一个对象的不同属性通过","相区别。

4 不同数据格式对象的解析实验

4.1 Html片段

在本实验中不使用规则串的形式来传递数据,而是用具体的 div标签形式传递所需要的数据信息。使用Ajax轻量级框架JQuery的Load方法,将包含不同个数对象的 Html片段加载至网页。实现方式如下:

$("#DataReslultDiv").load("CustomerOrders.htm");

Load方法可以远程载入HTML代码并插入到Dom中

单个Html解析对象可以表示为:

4.2 XML

Ajax轻量级框架JQuery提供ajax方法,可以实现对xml文件的读取和xml结点的解析,具体方法为:

其中,type定义了获取xml的方式为get请求,url为访问xml文件的地址,dataType定义了访问的文件类型为 xml,success为访问成功后执行的函数,在该函数中解析XML结点,计算每个结点解析所需要花费的时间。

以下是一个xml解析对象的表现形式:

其中data为根节点,area、xcoordinate、ycoordinate为子结点,分别记录地区、纬度、经度信息。

4.3 JSON

JQuery提供访问JSON文件的方法getJSON():

getJSON(paramOne,paramTwo)其中参数一为要访问的文件名,第二个参数为访问成功后要执行的函数,该函数的参数data为返回的JSON格式的数据,在该函数中完成对JSON数组元素的解析并记录解析所需要的时间。

JSON数据格式的单个解析对象为:

实验环境为单机:

CPU:AMD Athlon(tm)64 X2 Dual-Core Processor TK-53;

Memory:2G;

OS:Windows XP sp 2。

实验一模拟了在大量解析对象个数的情况下,计算机分别解析普通HTML、XML以及JSON对象所需要的时间。

表1 实验一(大量解析对象耗时情况)Tab.1 Time-consuming cases of a large-number analysis objects

从实验一可以看出使用 Html作为传输数据格式明显比XML、JSON获得更快的响应时间[6],在数据量少且数据结构不复杂的情况下,使用 Html应为首选的数据传输格式。同时,计算机对 JSON数据对象的解析也快于XML,虽然XML具有很好的通用性,但是在某些应用环境下使用JSON数据格式会缩短响应时间。

实验二模拟了在随解析对象个数递增的情况下(解析对象个数分别为 100、500、1000、2000、5000个),解析普通HTML片段、XML以及JSON对象所需要耗费的总时间和解析单个对象所要耗费的时间。

表2 实验二(不同解析对象数量耗时情况)Tab.2 Time-consuming cases of a different analysis objects

从实验二可以看出单个HTML对象的解析时间并没有随着解析对象的个数的增多而增多,在解析对象个数少量的情况下(100和500),计算机会花费较多的时间比重在 Html文件的解析上,但是当结点个数增加(1000、2000、5000)单个 Html的对象的解析时间基本持平。单个JSON对象的解析速度要快于XML对象的解析速度,而且XML对象的信息冗余会比JSON大得多,以下是两者在不同解析对象个数下的文件大小比较。

表3 不同数据格式文件大小比较Tab.3 Comparison of different data format file size

随着解析对象个数的增加,XML较之JSON的冗余程度增速会越来越快,冗余比重越来越大,因此与使用XML作为数据传输格式相比JSON会有更少的数据冗余,更快的响应。

5 结语

在模拟实验中,选取的解析对象为简单的一维数组形式,在较为复杂的应用中会有复杂的数组或对象嵌套情况出现,此时对XML对象的解析会更加耗时,同时增加更多的信息冗余。而使用 Html进行传输会使编码和维护工作异常繁重。使用JSON作为数据传输格式在不增加冗余的同时,对JSON对象的解析也会比以上两种数据格式更加容易且更易维护。因此,不同的应用背景下选择不同数据传输格式会影响 Ajax应用的响应时间,进而影响到用户体验。

[1]W3C Document Object Model[EB/OL].http://www.w3.org/DOM,2005.

[2]Extensible markup language(xml)1.0[EB/OL].http://www.w3.org,2006.

[3]json.Introducing JSON[EB/OL].http://www.json.org,2006.

[4]韩敏,冯浩.基于JSON的地理信息数据交换方法研究[J].测绘科学,2010,35(1):159-161.

[5]XML与JSON[EB/OL].http://book.51cto.com/art/200-803/67482.htm,2008.

[6]Smullen,C,Smullen S.AJAX Application Server Performance[J].Proceedings of the IEEE SoutheastCon 2007:154-158.

猜你喜欢
数据格式服务器端客户端
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
世界首个可记录物体内部结构等复杂信息的3D打印数据格式问世
论子函数在C语言数据格式输出中的应用
基于特征库的测井数据格式自动识别与转换方法