首页 > 与后台通讯,首先要了解AMF协议

与后台通讯,首先要了解AMF协议

Flash 5开始就可以以 XML 或者“变量/值”配对输出格式向服务器传送 数据 。虽然这些数据能通过Flash编译器自动解析或者通过 开发 人员自行编写的 代码 手动解析, 但解析的速度慢。因为在解析过程中,XML需要按节点逐层处理数据。而且使用XML和“变量/值”配对格式处理的数据类型只能是字符型,数字也不例外。而Flash Remoting却能处理复杂数据类型, 比如对象、结构、数组,甚至可以是数据集,配合 DataGrid 组件 可以很方便地显示数据。



为了处理复杂数据类型,采用一种独有的方式使Flash与
应用 服务器间可以来回传送数据势在必行。于是AMF应运而生。AMF是 Adobe 独家开发出来的 通信 协议,它采用二进制压缩,序列化、反序列化、传输数据,从而为Flash 播放器 与Flash Remoting网关通信提供了一种轻量级的、高效能的通信方式。





AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过
Web  Service。至于XML, LoadVars和loadVa ria bles() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。



注意:Flash Remoting需要浏览器支持Bin ary POST,Flash 播放器在Nets cape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有
效果 也不返回错误), Nets cape 7已经纠正了这个b u g 。对于早期Sa fari和Chim era版的苹果机也有这个问题。



同样是轻量级数据交换协议,同样是通过调用远程服务,同样是基于标准的HTTP和HTTPS协议, Flash Remoting为什么选择了使用AMF而放弃了SOAP与Flash 播放器通信呢  有如下原因:



SOAP将数据处理成XML格式,相对于二进制的AFM太冗长了; 

AMF能更有效序列化数据;因为AMF的初衷只是为了支持Flash ActionScript的数据类型,而SOAP却致力于提供更广泛的用途; 

AMF支持Flash 播放器 6只需要浏览器增加4 KB左右(压缩后)的大小,而SOAP就大多了; 

SOAP的一些头部
文件 请求在Flash 播放器 6不支持。那Flash 播放器 6为什么能访问基于SOAP的Web服务呢?原来Flash Remoting网关将SOAP请求在服务器端与转换成AFM格式,然后利用AFM与Flash 播放器通信。另外,AMF包中包含onResult 事件 (比如说response事件)和onStatus事件(比如说error事件),这些事件对象在Flash中可以直接使用。

AMF从Flash MX时代的AMF0发展到现在的AMF3。AMF3用作Flash Playe 9的ActionScript 3.0的默认序列化格式,而AMF0则用作旧版的ActionScript 1.0和2.0的序列化格式。 在网络传输数据方面,AMF3比AMF0更有效率。AMF3能将int和uint对象作为整数(integer)传输,并且能序列化ActionScript 3.0才支持的数据类型, 比如ByteArray,XML和Iexternalizable。

更多相关:

  • 分析凤凰网发现,跟广告相关的这个js频繁出现,它是生成图片和swf广告代码片段模板的脚本。 特分析如下: http://h0.ifengimg.com/ifeng/sources/yingguang-20140307.js 其源码如下 (function() {if (/.swf$/.test(ad.toLowerCase...

  • from:   http://www.ibm.com/developerworks/cn/linux/l-trace32/ 随着软硬件复杂性的增加,在嵌入式系统开发中,调试器对项目的开发进度、质量起着越来越重要的作用。在众多的调试器中,Lauterbach 公司的 Trace32 凭借其强大的功能,出色的性能,成为目前嵌入式系统...

  • FLASH中:0x08000000--0x08000000+SIZE保存的是用户代码 Rule: 16位为传输单位 读数据: u16 STMFLASH_ReadHalfWord(u32 faddr) 可以在通用地址空间直接寻址:data=*(vu16*)ADDR;[ADDR为32位数据,指向的数据为uv16型]写数据: 写之前1:解锁...

  • Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 C:Program FilesAdobeAdobe Flash Builder 4.6playerwin11.1 2. 安...

  • 本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...

  • 我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...

  • 作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...

  • 这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...

  • 这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...