APP下载

Android移动终端与服务器数据传输的研究*

2013-10-31朱小凡吉吉

武汉冶金管理干部学院学报 2013年1期
关键词:服务器端代码客户端

朱小凡,梅 明,熊 婷,王 吉吉,张 凯

(武汉科技大学 计算机科学与技术学院,湖北武汉 430065)

一、引言

随着3G时代的到来,为了让手机用户能够在任何时候,任何地方,以任何形式查询手机校园助手所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端,在手机上通过移动网和互联网访问Web网站并处理各项业务。从用户需求的角度来讲,将手机校园助手提供的服务通过现代的先进技术拓展到手机终端是一项具有极大潜在的用户需求,而基于Android平台的手机应用已成为必然的发展趋势,它是一个开放的手机平台,从发布到推广,在短短的时间内以惊人的速度占据大量的智能手机市场,而且将继续扩大其用户量。通过对Android提供的API访问Web服务器进行数据传输的研究,认为Android提供的技术在框架上有很大的优势,但是Android最常用的方式就是以XML格式的文件作为信息交换的媒介,这使其存在许多不足。首先,XML格式文件存储了大量的冗余信息,相对于JSON格式的文件需要占用更多的带宽。其次,XML的数据表示过于正规和繁琐,对移动和嵌入式应用程序尤其如此,这使其对XML格式的文件进行解析相比JSON格式的文件更复杂。因此,在具体提取数据和传输数据的细节上还需要增加新的技术来弥补,而JSON是一种轻量级的数据传输格式,允许轻松地将JavaScript对象转换成可以随请求发送的数据,在保障安全性的同时,解决了XML的缺陷。

二、基于JSON的数据传输技术

随着智能手机的普遍使用,使用移动终端访问浏览器的需求量越来越大,人们获取信息的途径也越来越多,Servlet技术由于具有可移植性,稳健性和易开发性而被广泛应用,它的主要功能在于交互式地浏览和修改数据生成动态Web内容,其过程为:客户端发送请求至服务器端—→服务器将请求信息发送至Servlet—→Servlet生成响应内容并将其传给Server—→服务器将响应返回给客户端。以实际项目中Android客户端向学校教务系统的Web服务器发送HTTP的GET和POST请求为例来进行说明,其系统框架设计如图1。

图1

在发送HTTP请求的过程中,使用JSON作为数据传输的过程如下:

当网页由于频繁访问而使流量的消耗过大时,和XML的数据传输格式相比,JSON作为一种更轻、更友好的Web Services客户端的格式,大大增强了用户体验。它不仅易于阅读和编写,同时也易于机器解析和生成,其工作原理如下:当学生通过手机客户端使用HTTP协议发送已序列化的JSON消息到服务器端,服务器端通过反序列化JSON消息,根据客户端请求进行相应的操作后,把请求的结果序列化成JSON消息返回给客户端,客户端获取到返回的JSON消息后,反序列化成具体需要的数据,从而大大提高了数据传输效率,节省了时间。

三、基于JSON和XML格式数据传输对比的实际应用

(一)JSON和XML数据传输时间对比

JSON相对于XML来讲,数据的体积小,速度远远快于XML。JSON占用带宽小,浏览器解析速度快,数据格式较简单,都是压缩的,而XML文件格式文件庞大,格式复杂,传输占用带宽大,服务器端和客户端都需要花费大量代码来解析XML。为了更好地比较JSON和XML的传输效率,我们通过使用JSON和XML两种数据传输格式对同一个数据库文件的学生信息进行数据传输并记录传输时间。其中:

1.JSON的数据传输格式如下:

2.XML的数据传输格式如下:

3.解析结果如图(2)图(3)所示

图2 JSON解析结果

图3 XML解析结果

由于网络不稳定因素,实验数据存在一定的波动,统计结果如表1:

表1 JSON和XML数据传输时间对比

实验数据表明,对于轻量级的数据,JSON的传输效率明显高于XML。这是因为在Android开发框架中,数据持久层都是使用面向对象的对象关系映射框架开发的,使开发着必须完全遵守面向对象的开发方法,但采用以XML格式文件作为信息交换媒介,需要将数据持久层查询的对象映射为XML文件,然后传送给Android客户端,再由Android客户端进行解析并封装成对象,或者与上述对象相反的过程。而JSON是利用JSON对象将其直接转化为脚本,大大提高了其传输效率,提高了用户体验。

(二)JSON和XML数据传输安全性对比

1.JavaScript的Eval()函数

在保障数据传输效率的同时,安全性的保障也是我们目前面临的重要问题,而JSON本来是JavaScript的一个安全的子集,不含有赋值和调用。因此在将JSON数据转换成为JavaScript对象的时候,我们包括许多JavaScript库都使用Eval函数。这意味着获取的JSON数据将被解析并执行,尤其是当有些数据是来自用户输入的时候,可能会带来意想不到的安全性问题。攻击者可以利用这点发送畸形、恶意的JSON数据,这样Evial函数就会执行这些恶意代码。

如发送以下学生信息代码:

上面的代码会导致浏览器把用户的Cookie数据提交到一个流氓网站,其中一种防止不安全代码出现的解决办法,是通过浏览器原生支持的JSON.parse(str)方法读取JSON数据,目前已经得到大部分主流浏览器的支持(IE8+,Firefox 3.5+,Chrome4+/Safari4+,Opera10+),而在不支持原生JSON对象的浏览器上面可以使用parseJSON方法进行读取,parseJSON采用解析器验证读入的代码是否真的是JSON代码,这样就提供了较好的安全性,但由于这是用模拟的方式读取,速度上会比Eval()慢。因此,在使用JSON作为数据交换格式的时候,我们可以使用正则表达式来检查JSON数据是否包含有恶意代码关键字,以此来保障JSON的安全性。

2.跨站访问问题

JSON数据传输的另外一个安全性问题则是跨站请求伪造(Cross-site request forgery,简称CSRF或XSRF),增加了用户数据传输的安全性隐患。对于这个问题,由于 JavaScript采用了称为“沙盒”的机制,这种机制限制JavaScript引擎仅能引入同一个站点的代码,因而某种程度上提高了JSON的安全性,确保用户数据安全传输而不会使数据泄漏。

四、JSON与XML对比

(一)可读性

JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。XML和JSON都是使用结构化方法来标记数据的,而JSON也提供了一种具有嵌套数据元素的结构,就像XML一样。与XML相同,JSON也是基于文本的,且它们都使用Unicode编码,且其与XML一样具有可读性。

(二)可扩展性

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的,不过JSON可以存储复合对象,有着XML不可比拟的优势。从主观上来看,JSON更为清晰且冗余更少,而且JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理,一个JSON文档的每一个实例都负责描述一个对象,其具体的描述是通过使用嵌套的对象,数组,字符串,数字,布尔值或null值来实现的。

(三)数据交换格式的分析

XML是一种用于描述信息存储格式的语言,其优点是健壮性和描述性强,而且是新一代开放可互操作的Web Service选用的通信数据格式。在移动应用程序中,开放者通常自己创建数据交换格式或可扩展标记语言XML。前者的优势是可针对特殊定情况进行调整,从而最大限度的提高性能,并最大限度的利用计算机资源。当在HTTP上使用后者时,其优势在于它是事实上的数据交换标准。另外,在XML中使用的基于文本的表示形式使其易于调试。这两种放放风各有其缺陷,前者本质是专用的非标准的,并可能是不可互操作的,而后者数据表示过于正规和繁琐,对于移动和嵌入式应用程序,JSON是一种轻量级的数据交换格式,是基于文本的,具有良好的可读性且易于调试,JSON支持所有基本数据类型的表示法,并提供将这些数据类型相互解析为Java类型的方法,对于轻量级应用,JSON数据交换格式能够较好的节省手机的计算资源,减少网络传输时间,加快网络传输速度。

(四)编码难度

XML有丰富的编码工具,比如 Dom4j、JDOM等,JSON也有json.org提供的工具。但是JSON的编码难度相对XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就比较复杂,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。

(五)解码难度

XML的解析要考虑子节点和父节点,相对来说较复杂,而JSON的解析难度几乎为零,这一点是XML无法比拟的。JSON和XML同样拥有丰富的解析手段,XML解析方式有两种:一是通过文档模型解析,也就是通过父标签索引出一组标记,但这样必须在预先知道文档结构的情况下使用,无法进行通用的封装。另外一种方法是遍历节点,这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。凡是这样可扩展的结构数据解析起来一定都很困难,JSON也同样如此,但如果预先知道JSON结构的情况下,使用JSON进行数据传递就更加方便快捷,可以写出很实用美观可读性强的代码。

(六)交互性

JSON和JavaScript的交互更加方便,客户端JavaScript可以简单的通过evil()进行JSON数据的读取,但JSON对数据的描述性和XML相比较差。

(七)流行度

XML已经被业界广泛的使用,而JSON才刚刚开始,只是在Ajax这个特定的领域。在普通的Web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成处理XML,还是客户端用JavaScript解析XML,都常常导致复杂的代码,极低的开发效率。

实际上,对于大多数Web应用来说,它们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势;许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或HTML片段相比,数据交换格式JSON提供了更好的简单性和灵活性。

五、结束语

通过手机移动终端来访问Web服务器已成为众多用户的选择,学生通过手机随时随地访问教务系统,在手机上和同学们进行学习交流等已成为广大高校学生的需求,但从另一方面来讲,流量的大量消耗也成为了学生们的负担。而JSON是一种轻量级的数据交换格式,能够生成更小的文档,且其在JavaScript脚本中更易于使用。其基本思想是,把自己实现为JavaScript开发中XML数据操作的主要替代者,利用其简单的数据格式,较小带宽的占用,代码开发量小,兼容性强,解析速度快,开发效率高,灵敏度高等优点有效地解决了XML所造成的缺陷,大大减小了移动浏览时的网络流量,在确保数据安全传输的同时大大提高了数据传输效率,体现了其优越性。

[1]栾咏红.基于Android的X ML解析器的分析与比较[J].南京晓庄学院学报,2011,(6):98-100.

[2]李瑞花.基于Android的XML解析技术的分析[J].计算机时代,2010,(12):31-33.

[3]刘平.Android手机访问服务器的一种数据交互方法[H].电子设计工程,2010,18(9):96-98,102.

[4]王晓禹,石丽.基于JSON实现Android智能终端与Web服务器“面向对象”的信息交换[J].数字技术与应用,2012,(04):224-225.

[5]肖邓华.基于Ajax和JSON的高校信息发布的系统设计与实现[J].软件开发与设计,2010,(02):86.

[6]张涛,黄强,毛磊雅等.一个基于JSON的对象序列化算法[J].计算机工程与应用,2007,43(15):98-100.

[7]胡文发,白中英.基于 J2ME/J2EE的JSON数据交换的探讨[J].电子设计工程,2009,17(12):102-103.

[8]崔璨,倪宏.使用 JSON对AJAX技术中的XML性能的优化仿真[J].通信技术,2009,42(08):102-110,114.

[9]高静,段会川.基于移动设备的JSON数据传输效率研究[J].信息技术与信息化,2011,(1):13-15.

[10]胡集仪.使用JSON改进WEB数据传输[J].科技信息,2008,(35):90,97.

猜你喜欢

服务器端代码客户端
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
创世代码
创世代码
创世代码
创世代码
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于Qt的安全即时通讯软件服务器端设计