Action Message Format
AMF (англ. Action Message Format, формат сообщений о действиях) — бинарный формат обмена данными, использующийся в приложениях, написанных на Action Script. Построен на основе протокола Simple Object Access Protocol и используется, преимущественно, для обмена информацией между Adobe Flash и базами данных. Action Message Format более экономичен по трафику по сравнению с XML и позволяет передавать типизированные объекты.
История
Adobe Systems опубликовала спецификацию AMF протокола 13 декабря 2007 года и тогда же анонсировала дальнейшую поддержку и развитие формата[1]. Впервые AMF был представлен с Flash Player 6. Следующая версия, получившая название AMF3, появилась с выходом Flash Player 9 и ActionScript (недоступная ссылка) 3.0[2].
AMF3
Новая версия протокола содержит некоторые изменения в типах данных. Сообщение, содержащее закодированную AMF3 информацию, имеет байт, определяющий тип сообщения, установленный в 0х11 вместо 0х14, а также содержит дополнительный 0x00 байт в конце заголовка. При этом, AMF3 обратно совместим с предыдущей версией, и может не содержать данной информации.
Маркеры типов данных в AMF3:
- Undefined — 0x00
- Null — 0x01
- False — 0x02
- True — 0x03
- Integer — 0x04
- Double — 0x05
- String — 0x06
- XML — 0x07
- Date — 0x08
- Array — 0x09
- Object — 0x0A
- XML End — 0x0B
- ByteArray — 0x0C
Поддержка AMF
На данный момент, формат AMF поддерживается большинством известных серверных языков и платформ в виде отдельных библиотек или фреймворков.
Платформы:
- ColdFusion — Adobe ColdFusion 10 Standard
- Haxe — Haxe Remoting hxformat
- Java — Adobe BlazeDS, Adobe LiveCycle Data Services, Exadel Flamingo, RED 5, Cinnamon, OpenAMF, Pimento, Granite Архивная копия от 14 октября 2007 на Wayback Machine, WebORB for Java
- .NET — WebORB for .NET, FluorineFx (LGPL), AMF.NET (разработка прекращена)
- PHP — AMFPHP Архивная копия от 15 октября 2011 на Wayback Machine, SabreAMF, WebORB for PHP, Zend_Amf, php-amf3
- Python — PyAMF, Flashticle, amfast, Plasma
- Perl — AMF::Perl, Storable::AMF, AMF::Connection
- cURL — Curl Data Services
- Ruby — RubyAMF, WebORB for Rails, Rocket AMF
- Erlang — Erlang-AMF
- JavaScript — JSAMF
- ABAP — ABAP AMF
- Delphi — kbmMW
- iOS — CocoaAMF
- Powershell — Powershell AMF
Фреймворки:
- Ruby on Rails — RubyAMF
- Zend Framework — Zend_AMF
- OSGi Framework — AMF3 for OSGi
- Django — Django AMF
- CakePHP — CakeAMFPHP
- Grails — BlazeDS
- Trac — TracRpcProtocolsPlugin. (Требуется XmlRpcPlugin версии 1.1.0 или выше).
- Web2py — PyAMF
- kbmMW
Ссылки
- AMF 0 Specification
- AMF 3 Specification (недоступная ссылка). Дата обращения: 4 июля 2009. Архивировано 20 марта 2012 года.