美章网 资料文库 Ajax数据通信应用论文范文

Ajax数据通信应用论文范文

本站小编为你精心准备了Ajax数据通信应用论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

Ajax数据通信应用论文

1相关工作

近年来,研究者们主要围绕ajax的客户端编程模式、数据交换格式、数据压缩、客户端解析效率等方面对其性能优化进行了广泛的研究,取得了一定的成果。文献[4]比较了Ajax分别以XML和JSON为数据负载时的响应数据量、客户端解析效率及安全性,提出了Ajax以XML和JSON为数据载体时的应用场合;文献[5]着重从HTML、XML、JSON三种数据传输格式的对象解析入手,分析了在不同环境下使用不同数据传输格式对Ajax应用实时性响应的影响,提出JSON在不增加冗余的同时解析也比前两者容易;文献[2]基于传统Web应用模型的通信缺陷并结合Ajax工作原理,提出基于HTTP数据压缩和缓存的方法提高网络响应速度和Ajax框架性能。这些研究成果表明基于JSON的Ajax数据通信量、传输速度、解析效率都要高于同等条件下以XML和HTTP为载体的Web通信。因此,将不同的Ajax数据负载转换为JSON格式是优化Ajax数据响应性能的一种有效方法。文献[6]提出了在Web服务器的业务逻辑层实现以XML为载体的Ajax的数据转为JSON格式的方法,有效地提高了系统的传输效率;文献[7]通过分析JSON文法并建立对象导航图,提出了一种透明地将Java对象序列化为JSON表达式的算法,利用JavaScript引擎解析JSON响应,有效解决了解析XML所造成的缺陷。通过对以上研究的分析,可以看出目前对Ajax数据通信性能优化的方法主要集中在不同场合选择不同数据负载形式的策略上。虽然在基于JSON一定能提高Ajax数据通信效率上达成了共识,但还没有研究对服务器如何直接以JSON格式为载体响应Ajax引擎请求数据的实现方法进行探讨,一般都是研究以JSON作为一种中间转换格式进行数据传输。这种方式无疑多了一个中间转换的环节,浪费了系统资源,延时了数据响应时间,降低了用户的体验度。因此,研究服务器端应答Ajax引擎请求数据的结构及有效的实现应答数据转换为JSON格式的方法以提高Ajax数据传输和解析的效率具有重要的意义。

2基于JSON的Ajax数据通信快速算法

本文算法的基本思想是以JSON格式为参照,分析服务器应答Ajax引擎请求数据的结构,设计应答数据JSON序列化的有限状态机模型,基于此模型实现应答数据向JSON格式的转换,从而降低Ajax的通信数据量,减少客户端因JavaScript不能直接解析XML所占用的系统资源和无用解析计算,大大提高Ajax的数据传输效率和响应速度,使客户端拥有良好的用户体验度。

2.1JSON文法JSON是一种轻量级独立于编程语言的文本型数据传输格式。它采用JavaScript的子集StandardECMA-262第3版实现,能被所有的浏览器支持,不依赖第三方工具直接使用JavaScript解析,易于人们阅读和编写,也便于机器解析[8]。JSON建构于两种结构[9]:(1)对象:一个无序的“名称/值”对的集合。每个对象以“{”、“}”作为始、终标志,“名称”和“值”分别用‘“”’括住,两者间用“:”间隔,不同的“名称/值”对间用“,”分隔,如图1所示。从JSON的文法不难看出,JSON中的标签完全用于描述数据,不负责引导客户端浏览器显示的是格式化功能,是能实现服务器与客户端之间更简洁数据传递的主要原因。因此,JSON广泛用于Web客户端表现层数据描述和交换的载体。

2.2服务器端应答数据结构分析及其JSON序列化方法由于XML是Ajax的标准数据交换格式,已有的基于Ajax的Web应用在服务器端将作为应答的数据对象直接使用XML绑定、传输,如JAXB(JavaArchitectureforXMLBinding)。如果需要使用JSON作为数据交换格式时,再通过JSON编程接口将这些数据对象转换成JSON格式,如图3中带箭头实线所示。由图3可以看出,标准的Ajax基于XML数据传输是一种间接的方式,中间存在大量的数据格式化过程,占用服务器的资源和运算时间较多,降低了整个Ajax系统的数据响应效率。本文的主要工作正是要变间接为直接,将应答数据一步转换为JSON负载。为了实现这个目标,就必须分析应答数据的结构,找出其与JSON数据文法间的映射规律。目前,Web应用主要基于B/S结构,Web服务器的应答数据来源于数据库服务器的查询结果,这些结果以二维表格的形式存储,称之为记录集,实质是数据库服务器上被选中表里数据的一个镜像,如图4所示。也就是说,Web服务器应答的数据结构是一种复合表,一条记录对应一个数据对象,每个数据对象由若干个属性(字段)组成。通过比较可知,Web服务器中应答的记录集与JSON文法规定的数据格式间基本上是直接的映射关系:(1)记录集中的每条记录对应于一个数据对象,恰好与JSON文法中的数组对应,可以实现直接映射;(2)记录集中存储数据对象属性的字段在转换成“名称/值”对时,鉴于对象的属性可能较多,对象名仍然采用属性名,然后将其映射为JSON格式;(3)记录集中存储数据名称和值的字段与JSON文法中的对象的“名称/值”对应,将对象名用“名-value”替代后直接映射;(4)记录集中有些外键字段不能直接映射为JSON中的“名称/值”对,它们在记录集中主要起关联数据对象作用。此时,应该将这些关联字段进行“原子化”处理,将其映射为直接数据对象,再将这些直接数据对象按(1)、(2)、(3)中的方法映射为数组和原子的“名称/值”对对象,并将其作为关联字段所在数据对象的子对象。弄清Web服务器应答Ajax引擎的数据结构及其与JSON文法中定义的数据格式间的映射关系后,设计出应答数据与JSON数据格式间转换的有限状态机模型为M(rj)=(R,I,S,F,O,J),如图5所示。

2.3客户端JSON反序列化实现客户端反序列化就是将用于传输的流式文本型数据(jstd)转换为JSON对象以便JavaScript解析,这个工作可直接使用JavaScript的eval方法实现,无需借助第三方工具及结构。

3实验设计及结果分析

为了验证本文提出算法的正确性和传输速度快、解析效率高的特点,实验数据集采用RamonLawrence基于Java的DBstats程序通过JDBC连接MicrosoftAccess的Northwind库、UCIKDD、ML库及Internet上的一些公用数据库得到的样例数据[10],如表2所示。其中,未用比例表示空属性值占所在模式的比例,使用比例表示非空数据值占模式的比例,前者平均约为7.4%,后者平均约为44.8%,能较好地分析数据传输开销和解析效率。基于以上数据集,在相同网络环境下和相同应答数据量的条件下从生成数据负载时间、传输时间和客户端解析数据所用时间三个方面对比Ajax分别基于JSON和XML时数据交互的性能,应答数据集转换成JSON或XML数据负载时间、JSON或XML数据传输时间及客户端解析时间随数据元素个数变化的情况如图6、图7、图8所示。从图6可以看出,本文算法的序列化时间远少于XML序列化的时间。相同数据元素个数的条件下,本文算法平均要快5个/ms。其主要原因是序列化JSON时直接利用JSON对象的字符串型变量直接写入JavaScript,而XML要先生成一个DOM对象再用I/O流写入专门的XML文件,验证了JSON在性能上优于XML的事实。从图7中可看出,在传输相同数据量的条件下,本文算法的数据传输时间明显要少于基于XML的数据负载,平均约快13.85个/ms。其主要原因是本文算法基于的JSON只负载携带数据,而XML除携带数据外还要携带数据在客户端显示的标签,存在大量冗余标记,因此,将同一个元素序列化成XML后的数据量要大于JSON,传输速度当然也要慢些。图8说明本文算法在客户端的速度要明显快于XML,且随着数据的不断增大,优势越来越明显。其原因是因为本文算法基于的JSON负载是基于JavaScript的子集,直接使用浏览器的JavaScript解析,而XML要借助于DOM才能被浏览器解析,而且数据量越大,DOM的结构越负载,解析速度就越慢。综上所述,实验结果表明本文算法无论是在数据传输方面,还是在Web服务器序列化和客户端反序列化方面效率都明显高于基于XML的数据传输,更要高于先序列化为XML再转化为JSON的间接方式,是一种实现Ajax异步数据交互的快速算法。

4结语

本文设计了一个Web服务器应答Ajax引擎数据的JSON序列化有限状态机模型,提出了一种基于JSON的Ajax数据通信快速算法,较好地解决了Web服务器应答数据集直接序列化为JSON的问题,提高了数据通信和解析的效率,具有较好的响应比,带来了较好的用户体验度。如果在本文的基础上考虑对传输过程中的JSON数据负载进行压缩传输,可能使通信速度更快,这将是本文算法的主要后续工作。

作者:孙光明王硕单位:河北交通学院网络教研室北京交通大学计算机与信息技术学院