“Data Push” has been a top requirement for most people who build enterprise style RIAs. Being an evangelist who meets a lot of customers, the ability to do data-push was probably the top of the list for most of them. Datapush is so poular because there are no slew of requests flowing around, but only updates sent when required
The next on the list the ability to increase “performance” of connection with their respective backends. The key to this is to use a binary format (in the case of ActionScript it is AMF) which will then increases performance, allowing applications to load data up to 10 times faster than with text-based formats such as XML or SOAP.
Action Message Format (AMF) is a compact binary format to serialize ActionScript object graphs. Both data-push and remoting is made possible due to the AMF specification. But, data-push is achieved based on a Comet-like implementation with AMF3 over HTTP.
Many are clueless what options are there when it comes to interfacing their application to their backend technologies to achieve the above requirements. What many don’t realize is that, when Adobe has now opened up the AMF 3 specifiaction. People have been going out right implementing solutions on different platforms for AMF. So, here that the options available for you in the different technologies that I am aware of and I am going to tag the products with data-push capability, with a push button icon
On the Java Platform
- BlazeDS – BlazeDS is an open-source Java-based remoting and web messaging framework by Adobe itself that enables developers to easily connect to back-end distributed data and push data in real-time to Flex applications. This is something I personally use.
- LCDS (LiveCycle Data Services) – LiveCycle Data Services is the big cousin of BlazeDS, it has much more than what BlazeDS provides. It uses the RTMP protocol along with AMF & HTTP to provide these additional features. Check out this article for a feature comparison between LCDS & BlazeDS.
- WebORB for Java – WebORB by themidnightcoders.com has been quite popular for streaming, especially with other backends (which are discussed later). They have a solution for the Java stack too.
WebORB for Java is a server-side technology enabling connectivity between Flex, Flash and AJAX clients and Java applications. WebORB for Java can be installed into any J2EE server or servlet engine. The product can instantly expose any Java object, Java or Spring Bean, EJB or XML web service as a remoting service.
- Granite Data Services (GDS) – Another open-source Java based solution which uses AMF to implement data-push.
Data Push in GDS (named Gravity) is implemented as a Comet-like service with AMF3 messages sent over HTTP (no RTMP, no specific internet port), and is based on the Bayeux protocol. Gravity also provides JMS adapter support as described in Flex documentation… GDS is designed in order to provide a full integration with an EJB3 persistence layer
- – LightStreamer is a data-push based server built on the AJAX-Comet paradigm. It also lists Flex as one of the clients that it can deliver data to. Both HTML and Flex applications can receive live data from Lightstreamer, as well as traditional thick clients
On the ColdFusion Platform
- – ColdFusion provides excellent integration for remoting & data-push. ColdFusion 8 has Flash Remoting built in, so nothing extra is needed to use remoting. In addition, LiveCycle ES is built right into CF8, and it can be used for messaging, data push and more. In addition, you can easily integrate BlazeDS to your current CF installation by following the BlazeDS Release Notes
On the .NET Platform
- WebORB for .NET – WebORB for .NET is a development and a runtime Rich Internet Application (RIA) enabling platform. WebORB enables seamless integration between .NET server applications and a variety of rich internet clients including Flex. It enables rich clients to invoke server-side operations on the exposed .NET objects. Recently, WebORB announced that they are making the server free and have various support packages available.
- – FluorineFX is an open source Fluorine library which provides an implementation of Flex/Flash Remoting, Flex Data Services and real-time messaging functionality for the .NET framework
- FLUORINE – FLUORINE is an open source .NET Flash Remoting Gateway.
On the PHP Platform
- WebORB for PHP – WebORB for PHP can be installed into any PHP5 application to expose PHP classes as remote services. The product provides a complete implementation of the Adobe’s AMF0 and AMF3 messaging protocols and thus supports any Flash Remoting or Flex client.
- AMFPHP – AMFPHP is a free open-source PHP implementation of the Action Message Format(AMF). AMFPHP allows client applications built in languages such as Flash, Flex, and AIR to communicate directly with PHP class objects on the server.
- SabreAMF – A Google code project for a Flash Remoting server and client for PHP, which is BSD licensed.
- PYAMF – PyAMF provides Action Message Format (AMF) support for Python that is compatible with the Flash Player.
- DjangoAMF – Django AMF is a Middleware for Django web framework written in Python. It enables Flash/Flex applications to invoke Django’s view functions using AMF(Action Message Format)
On Ruby on Rails
- WebORB for Ruby on Rails – WebORB for Rails is server-side technology enabling connectivity between Flex and Flash Remoting clients and Ruby on Rails applications. WebORB for Rails can be installed as a plugin into any Rails application to expose Ruby classes as remote services. The product provides a complete implementation of the Adobe’s AMF0 and AMF3 messaging protocols and thus supports any Flash Remoting or Flex client.
- – RubyAMF is an open source flash remoting gateway for rails. It plugs directly into your controllers with render :amf.
I am sure this is not an exhaustive list, but a collection of the solutions that I know of. If any of you know any more, feel free to comment and I will gladly add them to the list… Hope this was useful for all.