Akagi201
2/8/2015 - 6:34 PM

AMF.md

AMF协议是Action Message Format协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用,在功能上与WebService相当,但AMF与WebService中的xml不同在于AMF是二进制数据,而xml是文本数据,AMF的传输效率比xml高。AMF使用http方式传输,目前主要用于ActionScript中,实现Flex与Service之间的通信。AMF目前有两种版本,AMF0和AMF3,他们在数据类型的定义上有细微不同。 AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML, 它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。除了AMF编码进行高效数据操作的功能之外,ByteArray还有一个很酷的功能,就是从内存中深层次的Copy(Clone)整个对象。 具体AMF是怎么使用的在这里就不做详细讨论了。amf.c是RTMPDump解析RTMP协议的函数存放的地方,在这里贴上其源代码。对其中大部分代码作了比较详细的注释。建议看代码之前熟悉AMF协议,手头上准备好AMF0和AMF3的官方协议文档。

AMF数据采用 Big-Endian(大端模式)