- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
新手入门AMF协议基础全解
来源:刷钻 /
在Flash领域我们都知道AMF协议,目前AMF协议已经有了两个版本,
从AMF0一直到现在的AMF3,给我们带来的变化也是很大的。那么下
面我们就将来仔细研究一下这个Adobe独家开发的通信协议。也是
Flash Remoting的核心技术——AMF协议。
AMF是什么?它的优点中是什么?Flash Remoting为什么选择了使用
AMF而放弃了SOAP与Flash播放器通信呢?
Flash 5开始就可以以XML或者“变量/值配对输出格式向服务器传
送数据。虽然这些数据能通过Flash编译器自动解析或者通过开发人
员自行编写的代码手动解析, 但解析的速度慢。因为在解析过程
中,XML需要按节点逐层处理数据。而且使用XML和“变量/值配对格
式处理的数据类型只能是字符型,数字也不例外。而 Flash Remoting
却能处理复杂数据类型, 比如对象、结构、数组,甚至可以是数据集,
配合DataGrid组件可以很方便地显示数据。
为了处理复杂数据类型,采用一种独有的方式使Flash与应用服务器
间可以来回传送数据势在必行。于是AMF协议应运而生。AMF是Adobe
独家开发出来的通信协议,它采用二进制压缩,序列化、反序列化、传
输数据,从而为Flash播放器与FlashRemoting网关通信提供了一种
轻量级的、高效能的通信方式。
AMF 最大的特色在于可直接将 Flash 内置对象,例如 Object,
Array,Date, XML,传回服务器端,并且在服务器端自动进行解析成适
当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由
于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合
用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越
高,远远超过WebService。至于XML,LoadVars和loadVariables(),
它们使用纯文本的传输方式,效能就更不能与FlashRemoting相提并
论了。
注意:Flash Remoting需要浏览器支持BinaryPOST,Flash 播放器在
Netscape 6.x.环境下运行 Flash Remoting 会不起作用(Flash
Remoting调用没有效果也不返回错误),Netscape7已经纠正了这个
bug 。对于早期Safari和Chimera版的苹果机也有这个问题。
同样是轻量级数据交换协议,同样是通过调用远程服务,同样是基于
标准的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协议从FlashMX时代的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。
文档评论(0)