AMF
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 та Action Script 3.0[2].
Нова версія протоколу містить деякі зміни у типах даних. Повідомлення, що містять закодовану 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 підтримується більшістю відомих серверних мов та платформ у вигляді окремих бібліотек або фреймворків.
Платформи:
- ColdFusion — Adobe ColdFusion 10 Standard [Архівовано 11 серпня 2011 у Wayback Machine.]
- haXe — haXe Remoting hxformat [Архівовано 18 травня 2014 у Wayback Machine.]
- Java — Adobe BlazeDS, Adobe LiveCycle Data Services [Архівовано 6 лютого 2013 у Wayback Machine.], Exadel Flamingo [Архівовано 4 травня 2011 у Wayback Machine.], RED 5 [Архівовано 23 жовтня 2019 у Wayback Machine.], Cinnamon [Архівовано 13 грудня 2013 у Wayback Machine.], OpenAMF, Pimento [Архівовано 31 травня 2014 у Wayback Machine.], Granite [Архівовано 14 жовтня 2007 у Wayback Machine.], WebORB for Java
- .NET — WebORB for .NET, FluorineFx (LGPL), AMF.NET (розробка припинена)
- PHP — AMFPHP [Архівовано 15 жовтня 2011 у Wayback Machine.], SabreAMF [Архівовано 18 травня 2014 у Wayback Machine.], WebORB for PHP, Zend_Amf, php-amf3 [Архівовано 1 квітня 2012 у Wayback Machine.]
- Python — PyAMF [Архівовано 20 листопада 2014 у Wayback Machine.], Flashticle, amfast [Архівовано 18 травня 2014 у Wayback Machine.], Plasma
- Perl — AMF::Perl [Архівовано 5 листопада 2013 у Wayback Machine.], Storable::AMF [Архівовано 5 листопада 2013 у Wayback Machine.], AMF::Connection [Архівовано 5 листопада 2013 у Wayback Machine.]
- cURL — Curl Data Services
- Ruby — RubyAMF [Архівовано 18 травня 2014 у Wayback Machine.], WebORB for Rails, Rocket AMF [Архівовано 10 червня 2018 у Wayback Machine.]
- Erlang — Erlang-AMF [Архівовано 7 січня 2014 у Wayback Machine.]
- JavaScript — JSAMF [Архівовано 10 червня 2018 у Wayback Machine.]
- ABAP — ABAP AMF
- Delphi — kbmMW [Архівовано 25 грудня 2021 у Wayback Machine.]
- iOS — CocoaAMF [Архівовано 29 грудня 2013 у Wayback Machine.]
- Powershell — Powershell AMF
Фреймворки:
- Ruby on Rails — RubyAMF [Архівовано 9 грудня 2013 у Wayback Machine.]
- Zend Framework — Zend_AMF
- OSGi Framework — AMF3 for OSGi
- Django — Django AMF
- CakePHP — CakeAMFPHP
- Grails — BlazeDS
- Trac — TracRpcProtocolsPlugin [Архівовано 18 травня 2014 у Wayback Machine.]. (Потребує XmlRpcPlugin [Архівовано 25 червня 2014 у Wayback Machine.] версії 1.1.0 або вищу).
- Web2py — PyAMF [Архівовано 18 травня 2014 у Wayback Machine.]
- kbmMW [Архівовано 25 грудня 2021 у Wayback Machine.]
- ↑ AMF 0 Specification (PDF). Архів оригіналу (PDF) за 28 серпня 2008. Процитовано 18 травня 2014.
- ↑ AMF 3 Specification (PDF). Архів оригіналу (PDF) за 20 березня 2012. Процитовано 18 травня 2014.