`
zccst
  • 浏览: 3293666 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
Flash Remoting的核心技术——AMF
AMF是什么?它的优点中是什么?Flash Remoting为什么选择了使用AMF而放弃了SOAP与Flash 播放器通信呢?

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和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。

注意:Flash Remoting需要浏览器支持Binary POST,Flash 播放器在Netscape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有效果也不返回错误), Netscape 7已经纠正了这个bug 。对于早期Safari和Chimera版的苹果机也有这个问题。

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

    1,SOAP将数据处理成XML格式,相对于二进制的AFM太冗长了;
    2,AMF能更有效序列化数据;因为AMF的初衷只是为了支持Flash ActionScript的数据类型,而SOAP却致力于提供更广泛的用途;
    3,AMF支持Flash 播放器 6只需要浏览器增加4 KB左右(压缩后)的大小,而SOAP就大多了;
    4,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。
  • 大小: 6.7 KB
分享到:
评论

相关推荐

    开源amf协议解析封装

    amf c# flex服务端协议解析和封装。

    AMF3协议中文版定义.pdf

    AMF3协议中文版定义.pdf

    AMF协议源码

    AMF源码 AMF源码欢迎下载

    Delphi AMF

    Delphi的AMF格式代码。 TAMF3Stream = class(TAMFBaseStream) private type TAMFCache<T> = class private FIndex: Integer; FCache: TDictionary, Integer>; function GetIndex(const Obj: T): Integer; ...

    RTMP协议中AMF的定义.pdf

    《RTMP协议中AMF的定义》,原名《TheAMF》英文版本。 内容简介: The AMF object is used for the sending and receiving of all video/audio data. After the initial handshake, all objects sent use the AMF ...

    AMF抓取flex页面数据

    抓取AMF协议的flex页面,支持模拟登录和页面抓取。

    amf.zip_AMF_amf_python

    python3.0 以上可用的amf协议数据解析类库

    AMF数据分析器_V22.EXE

    大话自制端 PKG解包工具

    cocoaAMF使用指南.zip

    AMF是Action Message Format协议的简称,AMF协议是Adobe公司自己的协议,主要用于数据交互和远程过程调用,在功能上相当于WebService,但是AMF与WebService中的XML不同的是AMF是二进制数据,而XML是文本数据,AMF的...

    amf3协议解析的例子

    之前测试解析amf3协议数据进行树化便于观察的,解析的有可能不是很完美,正常用来观察里面的数据没什么问题

    amf-file-format-spec

    amf协议格式英文文档 1 Introduction 1.1 Purpose 1.2 Notational Conventions 1.2.1 Augmented BNF 1.3 Basic Rules 1.3.1 Variable Length Unsigned 29-bit Integer Encoding 1.3.2 Strings and UTF-8 2 Technical...

    (5G AMF网元标准协议中英文对照版)29518-g00 Access and Mobility Management Services(AMF).docx

    (5G AMF网元标准协议中英文对照版)29518-g00 Access and Mobility Management Services(AMF).docx

    ServerPush

    blazeDS采用amf协议。该协议可以传输Object, Array, Date, XML。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web ...

    rtmp数据抓取保存

    rtmp rtmp协议 amf rtmp协议学习 可以学习rtmp协议与AMF协议 有疑问可以与我联系~

    (AMF) RTMP协议资源下载C++实现

    Adobe宣布将公开实时消息传送协议(Real-Time Messaging Protocol,RTMP)规范,RTMP是设计在Adobe Flash平台技术之间提供高性能音频、视频和数据传输。之前Adobe公开AMF规范就收到了RIA社区不同程度欢迎。 这份源码...

    amf3cplusplus

    一个用C++编写的,amf3协议解析模块,可以实现flash通信协议的解析

    LR vugen详细教程

    AMF协议 Citrix协议 Click and Script协议 COM协议 Flex协议 Jave协议 Java协议手动编写脚本 Jave over HTTP协议 LDAP协议 邮件服务协议 Microsoft.NET协议 Oracle NCA协议 RDP协议 RTE协议 SAP协议 Siebel Web协议 ...

    AMF3 format

    amf3 的格式说明,英文版,做rtmp协议或者做与flash数据交互服务器端必备的参考

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。 BlazeDS 是 Adobe LifeCycle Data Services 的...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。 BlazeDS 是 Adobe LifeCycle Data Services 的...

Global site tag (gtag.js) - Google Analytics