Adobe Integrated Runtime and Flash Player use AMF to communicate between applications and a remote server. AMF encodes remote procedure calls (RPC) into a compact binary representation that can be transferred over HTTP/HTTPS or the RTMP/RTMPS protocol.
Objects and data values are serialized into this binary format, which increases performance, allowing applications to load data up to 10 times faster than with text-based formats such as XML or SOAP.
AMF3, the default serialization for ActionScript 3.0, provides various
advantages over AMF0, which is used for ActionScript 1.0 and 2.0.
AMF3 sends data over the network more efficiently than AMF0. It supports sending int and uint objects as integers and supports data types that are available only in ActionScript 3.0, such as ArrayCollection, ByteArray and ObjectProxy.
Features:
- AMF0 encoder/decoder for legacy Adobe Flash Players (version 6-8)
- AMF3 encoder/decoder for the new AMF format in Adobe Flash Player 9 and newer
- Optional C-extension for maximum performance, created using Cython
- Support for IExternalizable, ArrayCollection, ObjectProxy, ByteArray, RecordSet, RemoteObject and more
- Remoting gateways for Twisted, Django, Google App Engine, Pylons, TurboGears2, Web2Py and any compatible WSGI framework
- Adapter Framework to integrate nicely with third-party Python projects including Django, Google App Engine and SQLAlchemy
- Authentication/setCredentials support
- Python AMF client with HTTP(S) and authentication support
- Service Browser (DescribeService header) requests supported
- Local Shared Object support
What is new in this release:
- Provide support for AMF3 remoting packets (BlazeDS acting as a client).
- AMF0 Remoting error tracebacks will be a list rather than a string.
- Switch the PyAMF client to use urllib2. Provides support for proxying and gzipped responses. Thanks to @PaulWinkeler for the heavy lifting.
- Added support for SQLAlchemy 0.6beta1.
- Introduced a new adapter for Elixir, a thin wrapper around SQLAlchemy.
- Simplified type_map in Encoder classes.
- Fixed a small bug when handling empty M2M relationships with unpersisted Django objects.
- Updates to support Plasma.
- Fixed a small bug in BaseGateway.removeService, thanks agronholm for the patch.
- Pure Python AMF3 Decoding performance improvements (up to x3).
- Non-ascii characters in the exception message would cause a UnicodeError.
- All ORM adapters will no longer set properties as static attributes.
- Default to using __new__ for instance creation if available.
- Ability to unregister_type_alias.
- __amf__.proxy actually works.
- Django adapter now uses get_all_field_names to find model properties.
- Added ClassAlias.bases and deep class tree support for typed classes.
- use_references keyword arg has been removed from amf3.Encoder.write*.
- ClassAlias.getEncodableAttributes now will return a single dict of properties.
- PyAMF Client will raise an exception if the remote gateway returns a service error.
- Fixed a reference bug with unsaved Django model instances. Thanks to wolver for the patch and tests.
- Fixed a small bug in decoding Django relations when declared as static. Thanks to wolver for the patch.
- Removed exceptions from all Context and pyamf.util.Indexed* classes.
- Empty Django relations are now encoded as None, not pyamf.Undefined.
- pyamf.ClientType removed, as it is not spec compliant.
What is new in version 0.6b2:
- Provide support for AMF3 remoting packets (BlazeDS acting as a client)
- AMF0 Remoting error tracebacks will be a list rather than a string
- Switch the PyAMF client to use urllib2. Provides support for proxying and gzipped responses. Thanks to @PaulWinkeler for the heavy lifting.
- Added support for SQLAlchemy 0.6beta1
- Introduced a new adapter for Elixir, a thin wrapper around SQLAlchemy
- Simplified type_map in Encoder classes
- Fixed a small bug when handling empty M2M relationships with unpersisted Django objects
- Updates to support Plasma
- Fixed a small bug in BaseGateway.removeService, thanks agronholm for the patch
- Pure Python AMF3 Decoding performance improvements (up to x3)
- Non-ascii characters in the exception message would cause a UnicodeError
- All ORM adapters will no longer set properties as static attributes
- Default to using __new__ for instance creation if available.
- Ability to unregister_type_alias
- __amf__.proxy actually works
- Django adapter now uses get_all_field_names to find model properties
- Added ClassAlias.bases and deep class tree support for typed classes
- use_references keyword arg has been removed from amf3.Encoder.write*
- ClassAlias.getEncodableAttributes now will return a single dict of properties
- PyAMF Client will raise an exception if the remote gateway returns a service error
- Fixed a reference bug with unsaved Django model instances. Thanks to wolver for the patch and tests
- Fixed a small bug in decoding Django relations when declared as static. Thanks to wolver for the patch.
- Removed exceptions from all Context and pyamf.util.Indexed* classes
- Empty Django relations are now encoded as None, not pyamf.Undefined
- pyamf.ClientType removed, as it is not spec compliant
What is new in version 0.4.2:
- Support for decoding the 'source' property on ArrayCollections
- Fixed an issue in the GAE adapter where dynamic properties would be missing on referenced objects.
- Fixed a critical issue with AMF0 reference counting when encoding remoting responses.
- Strengthened http header handling in the client.
- Support for Django i18n ugettext_lazy.
- Added support for microseconds for datetime objects. Thanks to Derek Payton for the patch.
- Added support for property types on SQLAlchemy mapped classes.
- Added support for property types for Google AppEngine db.Model and db.Expando.
Requirements:
- Python 2.3 or higher
- fpconst 0.7.2 or higher (when using Python under 2.4 or Windows)
- ElementTree 1.2.6 or newer (included in Python 2.5 and newer)
- uuid 1.30 or newer (included in Python 2.5 and newer)
Comments not found