网络传输协议AMF初探
AMF协议是Action Message Format协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用,在功能上与WebService相当,但AMF与WebService中的xml不同在于AMF是二进制数据,而xml是文本数据,AMF的传输效率比xml高。AMF使用http方式传输,目前主要用于ActionScript中,实现Flex与Service之间的通信。目前最新的版本是AMF3。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。目前支持的数据类型在AMF协议中对应的值是:
Number 0×00;
Boolean 0×01;
String 0×02;
Object 0×03;
MovieClip 0×04;
Null 0×05;
Undefined 0×06;
Reference 0×07;
ECMAArray 0×08;
ObjectEnd 0×09;
StrictArray 0x0a;
Date 0x0b;
LongString 0x0c;
Unsupported 0x0d;
Recordset 0x0e;
XMLObject 0x0f;
TypedObject(Class) 0×10;
从客户端获取Http请求(Request)流;
对流进行解串行化(Deserialize),得到服务器端程序能够识别的数据,并建立一个响应(Response)消息;
Debug开始;
对流进行各种处理(记录、许可、服务)得到返回值;
对响应流进行串行化;
发送Http响应给客户端;
SOAP将数据处理成XML格式,相对于二进制的AFM太冗长了;
AMF能更有效序列化数据;
因为AMF协议的初衷只是为了支持Flash ActionScript的数据类型,而SOAP却致力于提供更广泛的用途;
在对Flash Player 6 的浏览器支持上AMF只需要4KB左右(压缩后)的大小,而SOAP就大多了;
SOAP的一些头部文件请求在Flash Player 6 不支持.
SWF连上指定的Gateway;
请求Gateway上的service,并把所需的参数以AMF格式传给它;
将执行结果回传。
AMF协议是基于Http协议的,它的内容处理过程大致是这样:
同样是轻量级数据交换协议,同样是通过调用远程服务,同样是基于标准的HTTP和HTTPS协议,Flash Remoting为什么选择了使用AMF而放弃了SOAP与Flash播放器通信有如下原因:
由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML,它使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
介绍到这里应该还不清楚Flash如何通过AMF与数据库进行通信。具体的流程为:
Flash(*.swf) <-> Server端程序(PHP,ASP.NET,Java,Python,Ruby..etc) <-> DB
对于AMP,目前各种程序语言基本上都已经有了现成的框架,如PHP有AMFPHP/Zend_Amf,.NET有FluorineFx,Python有PyAMF,Ruby有RubyAMF。不管是哪种语言,流程上都差不多:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:标点符 来源: 标点符
- 标签: AMF
- 发布时间:2013-09-07 15:16:53
- [66] Oracle MTS模式下 进程地址与会话信
- [65] Go Reflect 性能
- [64] 如何拿下简短的域名
- [59] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [58] IOS安全–浅谈关于IOS加固的几种方法
- [52] 视觉调整-设计师 vs. 逻辑
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成