DataPush & Remoting in Flex with Java, .NET, PHP, Python, Ruby and more…

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.

    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.

On Python

  • 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.

17 Responses to DataPush & Remoting in Flex with Java, .NET, PHP, Python, Ruby and more…

  1. Julien says:

    Hi Raghu,

    Just wanted to add RubyAMF – http://www.rubyamf.org to the Ruby On Rails list. It’s really neat 🙂

  2. […] почитать пост от Raghu (Technical Evangelist with the Flex Team in Adobe Bangalore, India) […]

  3. Hey Raghu,

    I think you’re slightly mistaken here .. and are confusing two different things Messaging and Remoting ..

    Messaging – allows for a publish/subscribe kind of an infrastructure and enables “data-push” from the server to all subscribed clients when one of the clients or the server updates data.

    Remoting – is the ability to call methods on remote objects

    Many of the servers you mentioned above do not support Messaging, hence “data-push” … but all of them support Remoting.

    _
    Mrinal

  4. raghunathrao says:

    @Julien – Thanks, I have added RubyAMF to the list

    @Mrinal – Yep, that was an oversight from my part. I guess I was too excited to see so many solutions out there. I have gone ahead and clarified it. Thanks…

  5. […] Slowing the application down by using XML for data transfer over optimized protocols – I had a chat with James when he was here for the Adobe RIA Architect summit. He told me that he hardly ever uses HTTPService or WebSerivce and swears by Remoting and the AMF format which can improve data transfer perfomance upto almost 10 times. You can read about the options for using AMF with different technologies here… […]

  6. Marcio says:

    How to integrate AMF on BlueDragon ?

  7. mahi says:

    hi..
    i need some examples on flex to intrect with .net for data transaction.. on sqlserver,,
    help me..

  8. Al says:

    Do you know which .Net technologies allow for ‘Server/Data Push’ to flex.
    Have you experimented with any?
    and do you have a basic example of how to achieve this?

    Would be very greatful with any advise/ assistance.

  9. Joe says:

    I’m really interested in a response to Al’s question.

  10. raghunathrao says:

    Both WebOrb & FlourineFX have DataPush aspects built into it. I havent experimented much other than the fact that I have used WebOrb once. I believe you can find code samples on their website

  11. […] most languages you might want to build a Flex app in, free, open options are available.  I had a recent need to prototype a solution that might also turn into a test fixture for our […]

  12. Yakov says:

    Raghu, How do you push from Java to Flex using BlazeDS?

  13. kishoreraju says:

    can u plz send me thedocumentation for how to connect java with flex using weborb usingwith tomcat server applications like struts or servlet applications plz i need documentaion for that.
    urs
    kishoreraju

  14. jcarlos says:

    Can I do a push to a c++ client ? how would O go about making the connection to the Java Remoting server ?

  15. Tariq Zacharia says:

    Hi Raghu,
    Can you post some examples, links on how to implement data push with BlazeDS

  16. Hi Raghu,

    Very interesting post indeed! I am looking for an open source PHP server alternative to do data push to a Flex client. Would this be possible with any of the proposed ones you have right now?

    THanks for the help.

    Eng. Valentín Secades

  17. Anand says:

    Hi,

    I want to connect my .net app with the flex application using remoting.Which is the best way to do?Many are suggesting webOrb.Is there any way to connect .net and flex without using any third party tool like weborb or florineFX.Pls Reply ASAP.

    Thanks

Leave a comment