欢迎来到学术参考网

基于AMF的Android数据通信

发布时间:2016-08-15 16:53

  文章将Flash/Flex开发中用于网络通信的AMF技术,移植到Android平台,实现了Android应用的高效网络数据通信

 

  截至到20151月,Android在国内移动操作系统中的份额已达80.4%,市场占有率相比IOS等系统具有巨大的优势。Android系统的网络应用开发常受到传输数据类型繁杂、数据量大、手机流量限制等制约,因此选用一种通信效率高、解析速度快的数据传输技术可有效降低程序响应时间、提高用户体验。

 

  1AMF

 

  AMF(Action Message Format)Adobe公司开发的一种免费开源、专用于Flash/Flex应用与服务器端通信的数据编码模式,其通信过程基于HTTP协议,具有兼容性好、传输效率高、解析速度快等优点。

 

  AMF可将基本数据类型如ListArray直接进行编码,并在服务器端自动解析为相应的对象。这种编码模式既符合面向对象的编程思想,又简化了编程人员的工作、缩短开发时间;AMF对数据进行二进制编码,可实现数据的高度压缩,因此非常适合传输类型繁杂、数量大的数据。数据量越大,AMF 的传输效率就越高,远远超过HTTPWeb ServiceAndroid应用常使用的传输方式。

 

  2 BlazeDS

 

  BlazeDSAdobe公司开发的一款免费开源的服务器端消息服务组件,基于远程对象调用(Remote Object)和消息服务(Message Service)技术,用于和Flash/Flex应用程序通信。BlazeDS包含了AMFJava实现,通常以Servlet的方式部署在Web服务器上。

 

  3 Android平台的数据传输

 

  Android应用与服务器进行网络通信,目前主要有SocketHTTPWeb Service三种方式。Socket方式主要应用于实时通讯,效率最高,但由于其涉及底层协议,实现较复杂;HTTP方式因实现简单、方便,更为常用,但通信效率不高;Web Service是一个支持不同操作系统、不同软件在网络间互相操作的模块化组件,常用于Android应用调用第三方服务器提供的数据服务,由于底层通常使用HTTPXML传输数据,通信效率也不高。

 

基于AMF的Android数据通信


  4 AMFAndroid平台实现

 

  BlazeDS的源代码中已包括AMF的传输、序列化与反序列化等功能,但因为Android SDKJDK的差异,无法直接在Android上使用。经研究,使用第三方的AMF解析组件并将组件针对Android SDK进行修改是更为高效的解决方法。

 

  第三方AMF解析组件amserializer实现了BlazeDSAMF序列化与反序列化的主要功能,可在Google Code下载。但在Android上使用amserializer,需解决Android SDK缺少部分类文件如Property Descriptor类、与服务器端通信类的问题。

 

  4.1内省类

 

  Property DescriptorJDK中是一个用于内省的类,在不修改Android SDK的前提下可用反射机制模拟出其基本功能。

 

  首先需建立类Property Descriptor,声明成员变量namedisplay Nameread Methodwrite Method,并生成对应的getset方法。

 

  然后,建立用于模拟内省功能的类Property DescriptorTool,部分代码如下.

 

  4.3通信类

 

  由于amf-serial izer组件只能解析AMF数据,没有与服务器端通信的功能,所以还需要参考BlazeDS源代码中的AMFConnection类,实现网络传输的功能。

 

  5测试

 

  为验证AMF的数据传输效率优于Web ServiceHHTTP方式,以学生基本信息数据为例,把测试程序使用不同的数据传输方式与网络服务器通信所耗费的时间进行比较。为减小误差,每组数据测试lO次、取平均值如表l所示。

 

  6结语

 

  测试数据显示,在Android移动应用开发中使用AMF数据通信格式是理想的选择,相比HTTPWeb Service方式,可以更好地节省流量、提高传输效率。

 

  作者:马巍 许合利 来源:无线互联科技 201514

上一篇:基于应用能力的《通信原理》课程改革探索

下一篇:船舶设备数字通信的应用