2 Replies Latest reply on May 30, 2008 12:29 PM by (Tom_Jordahl)

    Design Choices and is LiveCycle needed? best practices for using RTMP/AMF over HTTP/XML communicatio

      Hi,
      I am new to flex/RIA. I am exploring different design choices especially in client server communication. On client side we will be using Flash based RIA (using Actions scripts).
      There will be some simple forms (like for login, registration, payments etc) and some simple reports including with several graphs and charts. Each chart might have 1000 to 1500 data points etc. There are not video or audio content as such. On server side we have Servlets, java API and some EJBs to provide the business logic and real time prices/content (price update is usually every 10 seconds) /data. Some of the content will be static as well.

      I have following questions in my mind. Is it worth it to use RTMP/AMF channels for the followings?

      1. For simple forms processing (Mapping Actions scripts classes to Java classes). Like to display/retrieve/update data for/from registration forms.
      a. If yes, why? Am I going to be stuck with LCDS? Is it worth it? What could be the cons for heavy usage/traffic scenarios
      b. If not what are the alternates? Should I create the web services? Or only servlets are sufficient (ie. Only HTTP+Java based server side with no LCDS+RTMP+AMF)? All forms need to communicate on secure channel.
      2. For pushing the real time prices/content which we may need to update every 15 seconds on user interface using graphs and charts. Can I do it with some standard J2EE/JMS way with RIA (Flex) on front-end? i.e. Flash application will keep pulling data from some topic. Data can be updated after few secs or few minutes which cant be predicted.
      3. Are there any scalability issues for using RTMP? What happens if concurrent users increase 10 times within a year?
      4. What are the real advantages of using RTMP/AMF instead of simple HTTP/HTTPS probably using xml based objects
      5. Do I need to use LCDS if I am using AMF only on client side? Basically I mean if I am sending an object in form of xml from a servlet. Can some technology in Flash (probably AMF) in client side map it an Action script object?
      6. What are the primary advantages of using LCDS in a system? Is there any alternate solutions? Can I use some standard solutions for data push technologies?

      I would like that my server side implementation can be used by multiple types of clients e.g. RIA browser based, mobile based, third party software (any technology) etc.

      I appreciate if you can kindly refer me to some reading materials which can help me deciding the above. If this is not the right place to post this message then please do refer me to the place where I can post such questions.

      Thanks and Kind regards,
      Jalal
        • 2. Re: Design Choices and is LiveCycle needed? best practices for using RTMP/AMF over HTTP/XML communicatio
          Level 1
          Hi Jalal,

          Let me see if I can help with some of your questions

          1. Yes, you can use LCDS for simple forms processing. Any time you want to
          move data between the Flex client and the server, LCDS (or its free Open
          source cousin BlazeDS) is going to help. I would expect you would use the
          mx:RemoteObject MXML tag to invoke server side code, passing it the form
          data input by the application user.

          2. If you need to push near real-time data, LCDS gives you the RTMP channel
          which can scale quite nicely. You can then use the mx:Consumer MXML tag to
          subscribe the clients to the messages, which can come from almost anywhere,
          include JMS topics or queues.

          3. RTMP (included in LCDS) is the best option for scaling to tens of
          thousands of users and the LCDS servers can be clustered to proved better
          scaling.

          4. The AMF3 protocol used over the RTMP channels performs much faster than
          simple XML over HTTP. See this blog posting for some tests:
          http://www.jamesward.org/census/.

          5. If you are sending a Flex application XML, then I would recommend using
          the E4X API to work with the XML. This is a pretty nice and powerful way to
          work with XML. If you want Actionscript objects (and probably better
          performance), then using AMF serialization to Actionscript objects is the
          way to go.

          6. Primary advantages? There are many, but mainly you can avoid thinking
          about the plumbing and concentrate on solving your application and business
          logic problems.

          Hope this helps you a little

          --
          Tom Jordahl
          Adobe