AMF(Action Message Format)是Flash與服務端通信的壹種常見的二進制編碼模式,其傳輸效率高,可以在HTTP層面上傳輸。
很多Flash WebGame都采用這樣的消息格式。該格式通常與Adobe的RTMP結合使用,以建立連接和控制命令以傳輸流媒體。
在這種情況下,AMF數據封裝在壹個塊中,該塊具有壹個標頭,該標頭定義了諸如消息長度和類型(無論是“ ping”,“ command”還是媒體數據)之類的內容。
格式分析
AMF是隨Flash Player?6引入的,此版本稱為AMF0。直到Flash Player 9和ActionScript?3.0發行時,它才保持不變,當時新的數據類型和語言功能提示進行更新,稱為AMF3。
Flash Player 10添加了在2013年1月修訂的規範中記錄的矢量和字典數據類型。
Adobe Systems在2007年12月發布了AMF二進制數據協議規範,並宣布它將支持開發人員社區將該協議提供給每個主要服務器平臺。
以下amf數據包用於在已定義的Adobe / Macromedia容器或傳輸器(例如Flash Video或Real Time Messaging Protocol)之外傳輸消息。
支持AMF的平臺
許多服務器端語言和技術以應用程序開發人員必須安裝和集成的庫和服務的形式支持各種AMF協議。
1、ColdFusion?-
2、Haxe?-?Haxe Remoting?hxformat
3、Java?-?Adobe BlazeDS,?Adobe LiveCycle Data Services (formerly known as Flex Data Services);
Exadel Flamingo,?RED 5,?Cinnamon,?OpenAMF,?Pimento,?Granite,?WebORB for Java
4、.NET?-?WebORB for .NET,?FluorineFx?(LGPL),?DotAmf?(MS-PL),?AMF.NET?(development stopped)
5、PHP?-?AmfPHP,?SabreAMF,?WebORB for PHP,?Zend_Amf,?php-amf3 extension,?Baguette AMF(php extension)
6、Python?-?amfast
7、Perl?-?AMF::Perl,?Storable::AMF,?AMF::Connection
8、Curl?-?Curl Data Services
9、Ruby?-?RubyAMF,?WebORB for Rails,?Rocket AMF
10、Erlang-Erlang-AMF
11、ActionScript-FlashPlayerByteArray(in-built),CourseVectorLibrary
12、JavaScript-JSAMFCourseVectorLibraryCourseVector.minerva
13、Lua-lua-amf3
14、ABAP-ABAPAMF(earlystage)
15、Delphi-kbmMW(extensiveAMF0/AMF3support)
16、iOS-CocoaAMF
17、PowerShell-PowershellAMF