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协议解析封装主要涉及的是Action Message Format (AMF)技术在C#语言环境下的应用,特别是针对Flex客户端的服务端实现。AMF是一种高效的数据交换格式,常用于Adobe Flex和Adobe Flash Player与服务器之间的...
AMF3 协议中文版定义 AMF(Action Message Format,动作信息格式)是一种压缩的二进制格式,用于序列化 ActionScript 对象图。序列化后的 AMF 编码对象图可以用来持久化,并在不同的会话中获得应用的公共状态,或者...
AMF(Action Message Format)协议是Adobe公司开发的一种二进制数据序列化协议,主要用于Flash Player和服务器之间的数据通信。AMF提供了一种高效、快速的方式传输数据,它被广泛应用于Flex应用程序,允许客户端和...
这种功能使得AMF.NET成为开发与Flash或Flex客户端交互的服务器端应用程序的理想选择,例如实现Flash Remoting,即通过AMF协议进行跨域通信。 AMF.NET兼容.NET框架1.1和2.0及更高版本,这使得它能够应用于各种老版本...
AMF3(Action Message Format version 3)协议是Adobe公司为Flash Player和Flex应用程序之间通信设计的一种二进制数据交换格式。它旨在提高数据传输效率,同时保持足够的灵活性以适应不同类型的复杂数据结构。AMF3...
本教程将详细介绍如何抓取使用AMF协议的Flex页面数据,并涉及模拟登录和页面抓取的相关知识。 1. **AMF简介** - AMF是一种高效的数据序列化格式,用于在Flex客户端和服务器之间传输数据。它比XML或JSON更快,因为...
【描述】"thinkphp_amf的一个简单demo" 意味着这个项目是为了演示如何在ThinkPHP框架中集成AMF协议,以便Flex客户端能够与服务器进行数据通信。通常,这种集成可以用于创建富互联网应用程序(RIA),允许用户界面与...
8. **版本兼容性**:随着AMF协议的更新,分析器需要保持兼容,例如AMF数据分析器_V30可能意味着它支持AMF的最新版本。 在使用AMF数据分析器时,开发者和测试人员可以快速检查服务器返回的数据是否符合预期,排查...
但是,如果你选择自己实现,这将是一个很好的学习机会,可以深入理解AMF协议以及易语言的编程机制。 最后,文件名"amf解析构造易语言源码.e"表明你可能已经得到了一个包含易语言源代码的项目文件。打开这个文件,你...
AMF是Action Message Format协议的简称,AMF协议是Adobe公司自己的协议,主要用于数据交互和远程过程调用,在功能上相当于WebService,但是AMF与WebService中的XML不同的是AMF是二进制数据,而XML是文本数据,AMF的...
通过以上步骤,你可以在Android应用中实现与使用AMF协议的服务器的交互,无论是解析接收到的AMF数据还是构造并发送AMF请求,都可以游刃有余。不过要注意,由于AMF主要是用于Flash环境,随着Flash逐渐被淘汰,可能...
BlazeDS是Adobe提供的免费服务,而GraniteDS是开源项目,两者都支持AMF协议。 4. 服务调用:在Flex应用中,通过HTTPService或WebService组件可以调用Java服务,但使用AMFChannel则能实现更高效的数据交换。通过定义...
AMF移植涉及到将使用AMF协议的应用程序从一个环境迁移到另一个环境,例如从一个服务器平台到另一个,或者从一个开发框架到另一个。在这个过程中,我们需要关注AMF的编码、解码过程以及与之相关的库和工具。 标题...
通过阅读和学习这份源码,我们可以深入理解AMF协议的工作原理,以及易语言如何处理二进制数据和序列化。 在实际应用中,这样的源码可以用于开发游戏服务器、富媒体交互系统或者任何需要与Flash客户端通信的项目。...
### RTMP协议中AMF的定义 #### 一、引言 实时消息传输协议(Real-Time Messaging Protocol,简称RTMP)是一种专为实时音频、视频数据传输设计的协议,广泛应用于流媒体服务中。在RTMP协议中,AMF(Action Message ...
大话自制端 PKG解包工具
AMF协议解析: AMF是一种高效的二进制格式,它用于编码和解码RTMP中的数据,包括字符串、数字、对象、数组等多种类型。AMF分为两种编码方式:AMF0(也称为AMF3)和AMF3。AMF0更广泛地应用于早期的RTMP实现,而AMF3在...
**FluorineFx AMF:Action Message Format通信在Flex与.NET之间的应用** FluorineFx是一款开源的.NET框架,专门用于...通过深入理解AMF协议和FluorineFx的工作原理,开发者可以构建出高性能、低延迟的Web应用程序。
AMF扩展使得开发者能够在PHP后端与使用AMF协议的前端(如Flash或Flex)之间轻松传递复杂的数据结构,如对象、数组和基本类型,而无需进行繁琐的JSON或XML序列化和反序列化。 【文件列表】虽然只有一个文件名"amfext...