`

amf使用简介

    博客分类:
  • Php
阅读更多
最近需要用到amf 与flex通讯,特意找了一些文章

什么是AMF? (来源:http://blog.csdn.net/microrain/archive/2007/09/16/1786888.aspx)
       AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF over HTTP的方式将flash端资料编码后传回server,server端的remoting adaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。
       AMF除了用于Flash remoting外,也广泛的用于 Local Connection 与 Flash communication server,它最大的特色在于可直接将flash native object,例如Object, Array, Date, XML,传回server端,并且在server端自动进行转译成适当的对象,例如flash 的Array传回PHP时就会自动转换为 Associative Array;这个特色对开发者最大的好处在于不需要再人工处理serialization 与 deserialization的繁复工作,不但精确度更高,同时开发也更省时间。
       由于AMF是binary format并且编码时经过高度压缩,因此非常适合用来传递大量的资料,根据flashorb网站的测试(主要针对web service与flash remoting),当资料量越大时,flash remoting的传输效能就越高,远远超过web service的表现,因此同样的道理也可得知xml, loadVars, loadVariables 等使用plaine text format的传输方式自然也无可比拟

-----------------------------------------------------------------------------------------------------------------------------------

Flash Remoting的核心技术:AMF
(来源:http://blog.tom.com/fanzy1981_tech/article/6578.html)

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 播放器通信呢   有如下原因:

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。


------------------------------------------------------------------------------------------------------------------------

5. 与后端集成
Flex是前端的界面技术,而后端和数据库交互或大型运算依然需要依托Java、.Net、PHP、Ruby等语言。早在Flash 8的时候Adobe就提出AMF(Action Message Format)技术,即将Java等语言的对象转换为ActionScript对象的技术规范。AMF是将对象编译后作为2进制数据传输,比起WebService、HTTPService、XML等都有很多好处。在Adobe方面推出了Data Services 2,支持了AMF等 功能,但是价格昂贵。在开源方面,PHP有专门支持的AmfPHP,另外WebORB同时支持.Net、Java、PHP、Ruby,PHP和Ruby是 免费的。在Java方面就比较可怜了只有openAMF,至今文档依然很少,并且只支持AMF0,其它语言都有相关工具支持到AMF3。
分享到:
评论

相关推荐

    RTMP协议中AMF的定义.pdf

    内容简介: 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 structure. Once the AMF structure is understood, the ...

    应用CBCT评估克服手术并发症的下牙槽神经管位置和心理孔的数量

    辅助性精神孔(AMF)是一种具有重要意义的相关解剖结构,因为其存在可能会导致无法使用常规神经阻滞技术实现足够的麻醉水平。 目的:利用CBCT评估下牙槽神经管的位置和附属的精神孔。 目的:1)评估牙槽神经管(ANC...

    3GPP-23501-g10(中文版).pdf

    5.8.2.9.0 简介 149 5.8.2.9.1 UPF 构建“端标记”包 149 5.8.2.9.2 SMF 构建“端标记”包 149 5.8.2.10 上行隧道管理 149 5.8.2.11 N4 会话管理参数 150 5.8.2.11.1 概述 150 5.8.2.11.2 N4 会议背景 151 5.8....

    MySQL管理系统 AMS v1.5.0107

    Amysql - AMS简介 01) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL...

    LNMP/Nginx 虚拟主机面板 AMH v3.2

    07) 自主: web端使用AMP-PHP框架开发、后台AMS-MySQL管理系统、与及AMF-JS框架都为Amysql自主开发。 08) 开放: 灵活、开放,支持用户自定义功能模块编写、web/ssh在线模块扩展程序下载、安装、管理、卸载、删除。 ...

    AMS v1.0 MySQL数据库管理系统.rar

    Amysql - AMS简介 01) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL的...

    MySQL管理系统 AMS v1.5.0107.zip

    Amysql - AMS简介 01) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL...

    MYSQL管理系统(AMS) 1.5.0107.zip

    Amysql - AMS简介 01) 高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。 02) 强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL...

    api-modeling-framework:已弃用-该项目已被移走

    7/17/2018:签出新的实施源并在项目简介。 API建模框架 该项目旨在提供一个通用的编程接口,使开发人员可以与任何API规范(无论是用OpenAPI规范(OAS)还是RAML编写)进行交互,其方式类似于HTML DOM允许与HTML文档...

    人工智能-智能机器人发展史.docx

    1962年,美国AMF公司生产出"VERSTRAN"(意思是万能搬运),与Unimation公司生产的Unimate成为真正商业化的工业机器人,并出口到世界各国,掀起了全世界对机器人研究的热潮。 第二代机器人: 带感觉的机器人 20世纪...

    protox:protox是一款php数据类型格式化工具

    转换后的数据很方便使用json和amf进行编码,终于不用担心一个int转来转去变成string了。只需要一次数据定义和一次数据转换即可。#类型定义在指定目录下创建一个php文件,定义类名为:{文件名}_protocol, 同时继承...

    Amysql(AMS)官方版 v1.5.0107

    Amysql - AMS简介,高效: 应用AMP-PHP框架与AMF-JS后台框架开发,支持同时运行多个数据库、数据表窗口、支持自定义扩展插件等。强大: 强大的多行SQL执行能力,支持一次执行多行SQL并多窗口完美表现各行SQL的运行结果...

    ShadowEditor-v0.5.2源码

    简介:基于Three.js、Go语言和MongoDB的跨平台的3D场景编辑器。 主要功能: 1. 跨平台:支持Windows、Linux和Mac。 2. 支持多种3D格式:3ds, 3mf, amf, assimp(anim), awd, babylon, binary, bvh(anim), collada, ...

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

    资源简介现有的 Java EE 应用 假定我们已经拥有了一个管理雇员信息的 Java EE 应用,名为 EmployeeMgmt-Server,结构如 图 1 所示: 图 1. Java EE 工程结构 这是一个典型的 Java EE 应用,使用了流行的 ...

    跟我StepByStep学FLEX教程-王一松.pdf

    1 33 跟我StepByStep学FLEX教程------Caringorm之简介 1 34 跟我StepByStep学FLEX教程------MVC 1 35 跟我StepByStep学FLEX教程------Cairngorm之组成部分 1 36 跟我StepByStep学FLEX教程------Cairngorm之环境...

    ThinkPHP 3.1.2 - PHP的开发框架MVC - 含Core,Extend,Example

    [ 简介 ] ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架, 遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而 诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,...

Global site tag (gtag.js) - Google Analytics