amf0格式文档 amf0_spec_121207

### AMF0 格式详解 #### 一、引言 **1.1 目的** Action Message Format (AMF) 是一种紧凑的二进制格式,用于序列化 ActionScript 对象图。一旦序列化,AMF 编码的对象图可以用于在不同的会话之间持久化和检索应用程序的状态,或者允许两个终端通过交换强类型数据来通信。AMF0(即 AMF 的第一个版本)序列化 ActionScript 对象,并保留强大的类型信息,捕获应用程序数据的公开状态。AMF0 还支持发送复杂的数据结构。 **1.2 符号约定** 本规范采用特定的符号和约定来进行描述: - **1.2.1 扩展 BNF**: 使用扩展巴科斯范式 (Backus-Naur Form) 来定义语法结构。 - **基本规则**: - 字符串和 UTF-8: 在 AMF0 中,字符串使用 UTF-8 编码表示。 #### 二、AMF0 数据类型 **2.1 类型概览** AMF0 支持多种数据类型,包括但不限于数字、布尔值、字符串、对象等。这些类型共同构成了 AMF0 格式的基础。 **2.2 NumberType** 代表浮点数类型,用 8 个字节表示。 **2.3 BooleanType** 表示布尔值类型,用单个字节表示:0 表示 false,非 0 值表示 true。 **2.4 StringType** 表示字符串类型,字符串长度先被编码为无符号整数,然后是 UTF-8 编码的字符串数据。 **2.5 ObjectType** 表示对象类型,对象数据由一系列键值对组成,其中键为字符串,值可以是任意 AMF0 数据类型。对象以 `0x00` 结束。 **2.6 MovieclipType** 表示 Flash MovieClip 类型,此类型特指 Flash Player 中的 MovieClip 对象,用于表示动画内容。 **2.7 nullType** 表示空值类型,用一个字节 `0x05` 表示。 **2.8 undefinedType** 表示未定义类型,用一个字节 `0x06` 表示。 **2.9 ReferenceType** 表示引用类型,用来引用之前出现过的对象或数组,以节省空间。 **2.10 ECMAArrayType** 表示 ECMA 风格的数组类型,即 JavaScript 风格的数组,其键为字符串或整数。 **2.11 ObjectEndType** 表示对象结束标志,用一个字节 `0x00` 表示。 **2.12 StrictArrayType** 表示严格数组类型,其键仅为整数。 **2.13 DateType** 表示日期类型,包含日期时间和时区偏移量。 **2.14 LongStringType** 表示长字符串类型,字符串长度可达 16 位,适用于较长的文本。 **2.15 UnsupportedType** 表示不支持类型,用一个字节 `0x0A` 表示,用于表示 AMF0 不支持的数据类型。 **2.16 RecordSetType** 表示记录集类型,用于表示表格数据。 **2.17 XMLDocumentType** 表示 XML 文档类型,用于表示 XML 格式的文档。 **2.18 TypedObjectType** 表示类型化的对象类型,该类型的对象具有一个特定的类名。 #### 三、AMF0 扩展 **3.1 AVM+ TypeMarker** 随着 Flash Player 9 的发布,引入了一个新的虚拟机 AVM+ 和一个新的 AMF 版本——AMF3。为了与 AVM+ 兼容,AMF0 引入了一些扩展,包括特定于 AVM+ 的类型标记。 #### 四、AMF3 的使用 虽然本篇文章主要介绍 AMF0,但提及 AMF3 是因为两者之间的关联性。AMF3 是随 Flash Player 9 和 ActionScript 3.0 发布的新版本,它改进了 AMF0 并提高了序列化的效率和性能。 **4.1 NetConnection** 在 Flash 应用程序中,NetConnection 用于建立客户端与服务器之间的连接,传输数据通常采用 AMF 格式。 - **4.1.1 AMF Version**: 连接中指明使用的 AMF 版本,如 AMF0 或 AMF3。 - **4.1.2 AMF Header**: 包含连接信息和其他元数据。 - **4.1.3 AMF Body**: 包含实际的数据负载,如方法调用参数等。 #### 五、规范参考 本文档基于 Adobe Systems Inc. 发布的 AMF0 规范进行编写,版权归属 Adobe Systems Inc. (2002-2006)。 以上就是 AMF0 的详细介绍,涵盖了基本概念、数据类型以及相关扩展。AMF0 在 Flash 开发中扮演着重要的角色,尤其在早期版本的 Flash 中更是如此。































- woodey2014-01-11还好, 谢谢分享
- qq5301613432013-01-06挺好的 很规范
- pmoonstar2012-06-25英文的,难啃了
- moliqiang_1632012-08-15英文的,哎,难呀
- kilekevin2011-11-30文档翻译的比较粗糙,但是很好了

- 粉丝: 72
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机在现代测绘技术的应用.docx
- 互联网科技IT产品宣传介绍PPT模板ppt模板.pptx
- 分解因式与互联网搜索教案设计方案.doc
- 项目管理培训及应用感受分析.docx
- office计算机二级办公软件考试-office高级应用技术元文档.doc
- 人大金仓KingbaseES企业数据库中的两种垂直分区技术详解.doc
- GIS实用技术的洪水淹没模拟及灾害评估.doc
- 新型网络技术对教师继续教育培训行业的影响.docx
- 滨海新区智慧城市建设与发展研究.doc
- 机械设计制造及其自动化专业人才培养研究与实践.docx
- 学生宿舍管理系统数据库课程研究设计doc.doc
- 论计算机网络安全与防火墙技术.docx
- 基于网络的土工虚拟仿真试验室开发.docx
- 深度学习下小学语文习作单元活动设计与思考.docx
- 运用信息化手段进行科学课导入的方法例谈.docx
- hplc体内药物分析实用技术.ppt


