Adobe AMF3 规范详解

需积分: 10 3 下载量 147 浏览量 更新于2024-09-16 收藏 97KB PDF 举报
"AMF3规范文档,由Adobe Systems Incorporated发布,详细介绍了AMF3(Action Message Format 3)的二进制序列化格式,用于ActionScript对象图的序列化,以便在不同会话间持久化或恢复应用程序的公共状态,以及两个端点间高效的数据交换。" AMF3,全称ActionScript Message Format的第三个版本,是Adobe开发的一种高效的二进制数据序列化格式。它在2006年的Flash Player 9中随着ActionScript 3.0的引入而推出,作为对AMF0的升级。AMF0自2001年Flash Player 6起就已经存在,并在后续的Flash Player 7和8中保持不变。 AMF3的设计目标是提供一种紧凑、快速且类型安全的数据交换机制。它允许服务器和客户端之间以强类型的方式传输ActionScript对象,如数字、字符串、日期、数组、类实例等。AMF3的二进制格式比AMF0更优化,减少了冗余信息,从而提高了数据传输的效率和解析速度。 在AMF3中,有多种数据类型支持,包括: 1. **Number**: 64位浮点数,用于表示双精度数值。 2. **Boolean**: 1位,表示真或假。 3. **String**: 可变长度的UTF-8编码字符串。 4. **Object**: 序列化的ActionScript对象,包含键值对。 5. **Array**: 有序的元素集合,可以包含不同类型的数据。 6. **Date**: 表示UTC日期和时间的结构。 7. **XML**: 串行化的XML文档。 8. **Null**: 表示空值。 9. **Undefined**: 用于表示未定义的值。 10. **ECMAScript Object**: 对于非ActionScript对象,如JavaScript对象的序列化表示。 11. **ByteArray**: 用于传输二进制数据的类实例。 AMF3的序列化和反序列化过程涉及到类型标记和数据编码。每个AMF3对象以一个特定的字节开始,表示该对象的数据类型,然后跟随着相应的数据编码。例如,Number类型以0x00开头,Boolean以0x01或0x02表示true或false。 此外,AMF3还支持优化的字符串编码,通过引用先前出现过的字符串来节省空间。对于复杂对象,如ActionScript类实例,AMF3可以序列化其属性,而不包括私有或受保护的成员。 在ActionScript 3.0的环境中,AMF3被广泛用于Flex和Flash的Remoting框架,如Adobe LiveCycle Data Services和BlazeDS,它们提供了与后端服务器(如Java或PHP)之间的高性能数据交换。 总结来说,AMF3是ActionScript 3.0生态系统中的关键组件,为Web应用程序提供了一种高效、类型安全的数据交换格式,特别是在富互联网应用(RIA)中,它极大地提升了服务器与客户端间的通信性能。