QueTwo's Blog

thouoghts on telecommunications, programming, education and technology

Why are you NOT using LiveCycle DS?


Every time I show one of my demos at a usergroup meeting, or just with a customer, the sound of jaws dropping is something I’ve gotten used to.  It is not because of the fancy graphics, or the bug-free code (this is where the people who actually have seen my demos start laughing), but because of the cool things I do with data connectivity.

Data Connectivity?  That’s the boring stuff!

I’ve been deploying more and more applications using a middleware server for Flex called LiveCycle Data Services.  LCDS sits between your Flex or AIR applications and your back-end server such as ColdFusion.  It allows things such as proxying (for those hard-to-reach web services), data management, AMF connectivity, and messaging. 

Proxying, is pretty self-explanitory. You probably already know, but JavaScript and the Flash Player have security restrictions built in that disallow you to connect to multiple remote-sites.  This is so you don’t have rouge js or flash applications that do all sorts of bad things.  Unfortunately for some of us web developers, we NEED to connect to two remote sites (for example, to process a credit card off-site).  LiveCycle Data Services (and it’s little brother, Blaze DS), allows you to proxy those services with little-to-no code.  It just works

AMF connectivity (also known as Flash Remoting, or RemoteObject Calls) allows you to use binary, serializable, data connections with your back-end server.  No longer do you have to worry about the bloat and untyped object problems of Web Services SOAP calls, or pure XML dumps.  This is what 90% of the developers are using BlazeDS or LCDS for. While cool, it is small potatoes for me.

Messaging allows the Flex clients to send and receive unsolicited messages to and from each other or an application server. On the surface it sounds boring, but have you ever had to build a chatting application?   Your Flex, AJAX or JavaScipt application sits there, and POLLS your app server every x seconds for new data.  This wastes lots of bandwidth and application processing power (because not every poll will contain new data), and makes the end user feel like there is stuff happening when there isn’t.  And, if they use Internet Explorer, they will hear that dreaded ‘click’ each poll you do.  Messaging via LCDS/BlazeDS allows you to setup ‘channels’ that your app or app server listen to and can publish to.  If you need to send a real-time message to the client, all you do is publish data to that ‘channel’ and the end-client gets that message in real time.  Not only can you send simple messages (strings, integers, etc), but you can also send complex objects, classes and other wacky data-types. I’ve seen an implantation that sent binary-encoded messages such as PNG screen shots back and forth!  Many people use this feature to build apps like real-time dashboards or chatting apps. 

And the coolest feature of them all, in my opinion is Data Management.  Data Management allows developers to create managed collections (like the ArrayCollection), and have all the heavy-lifing of checking for updated data, sending revisions of data, etc. taken care of by LCDS.  In literally two lines of code (minus configuration on the servers), I can write an app that will display data to the end-user in a DataGrid, Form, or Chart.  And best of all, if that data is changed by any connected clients, or the application server, it will update the Flex application in real time!  If I want to allow the user to edit the data, I can either write a simple form (which can update the server and all other connected clients as the user types), or simply change the DataGrid to be editable.  No heavy lifting required.  Introducing conflict management is simple, as your DataServices component will trigger events that tell you what is changing on the server as it happens.  Paging and lazy-loading of data is simple too, requiring the server admin to change one switch.  It really is that cool.  Unfortunately, Data Management didn’t get open-sourced with BlazeDS.

So, why are you NOT using LCDS or BlazeDS?

  • No good documentation : While the documentation isn’t as good as the rest of the Flex suite, it is out there.  I suggest taking a look at the FusionAuthority magazine (the red, October edition), and you can read TWO of my articles on the subject.  FusionAuthority will be launching Flex-Authority soon, and will be having much more content on the subject.
  • Costs too much:  While the full-blown version of LCDS is pretty expensive, lets say $3,000 per CPU (contact your Adobe Sales Rep for exact pricing), there is a FREE version that is limited to a single CPU, and an OpenSource version that includes many of the features of LCDS.  LCDS-Express (the free edition) is included with the ColdFusion 8 download.
  • Too hard to configure:  It can be intimidating at first, but the configuration grows on you. The configuration files are written in XML, and are broken up by service type. You will find the configuration in your (application home)/WEB-INF/flex/ directory.  Look for the services-config.xml file to start. ColdFusion users can find the configuration in the (coldfusion root)/wwwroot/WEB-INF/flex/  directory. You can find examples on how to configure the files in my FusionAuthority articles.

Want to find out more?  Check out my usergroup’s presentation archive; there were two presentations on the matter, OR you can wait for FlexAuthority to come around. 


8 responses to “Why are you NOT using LiveCycle DS?

  1. Pingback: AJAX coding school » Blog Archive » AJAX Demos [2008-03-15 23:41:34]

  2. Pingback: LiveCycle ES vs LiveCycle DS vs BlazeDS - clearing up the confusion « Greg Wilson’s Ramblings

  3. gregorywilson March 29, 2008 at 12:31 pm

    Hey Nick – great post and good points. I just added it as a link from my latest post titled, “LiveCycle ES vs LiveCycle DS vs BlazeDS – clearing up the confusion”.


    Adobe Technical Evangelist

  4. Krzysztof Satola April 24, 2008 at 10:54 am

    Great post! I am going to start using LCDS! 🙂

  5. Vivek March 28, 2009 at 3:16 pm


    I’ve managed to install and successfully run LCDS with the bundled tomcat 6 and JRE (1.5). Everything works fine. But when i switch the JRE by changing JRE_HOME in catalina.bat to jre 1.6 update 12 (downloaded separately), tomcat starts up fine, all classes get loaded and there are no exceptions, but any remote object call that i make with XML AMF object as parameter (from flex) turns out to be null on the server side (w3c.dom object). However, this works as expected with the bundled JDK 1.5 (under \UninstallerData\jre). Can anyone help me out with this?

    I’m not sure if this is the right forum but i noticed adobe folks here and i’m desperate! 😦

    Thanks in advance,


  6. Jon Rose November 23, 2009 at 4:11 am

    From the comments on Anil’s blog, it sounds like the free single-cpu version is being done away with, which is bad news for those us hoping for LCDS to gain a larger market share.

    • quetwo November 23, 2009 at 4:20 am

      Yeah, LCDS Single-CPU edition / Community Edition won’t be available for 3.0 Adobe feels that they are giving us enough in BlazeDS (they are giving us a lot), but in some cases, LCDS was really what was needed for a project. I’m hoping that coupled with this news that LCDS will get a lower-cost version that will be able to be used for smaller applications. I don’t mind paying a few hundred dollars for it, but the current price tag will lock too many people out of the technology.

  7. Raju Arora July 23, 2010 at 12:42 pm

    Anne Kathrine Petteroe is coming this Aug at Adobe Flash Platform Summit 2010 to Speaks on Enterprise Rich Internet Applications with the Adobe Flash Platform. The summit will take place on 25 and 26 Aug’10. For details log on to adobesummit.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: