Thanks Seth, this really helps and your comments are very detailed and useful. I really appreciate these comprehensive comments of yours!
I have a question though, in regards to your statement that "Any channel type can be used with any service component" and whit the example of a DataService using the AMFChannel. I tried the default AMF Channel configured in LCDS xml files (the one with id = "my-amf") as the channel to be used by my DataService object. I got an error saying the DataService can't use this AMF channel. The same channel is successfully used by my RemoteObject class. I wonder why DataService can't use the AMF Channel in my case? Thanks, Robert --- In [email protected], "Seth Hodgson" <[EMAIL PROTECTED]> wrote: > > Hi Robert, > > Chances are you're trying to use DataService with auto-sync enabled over an AMFChannel that doesn't have polling enabled; if that's the case you won't receive any pushed updates. Auto-sync can be disabled for a DataService (say you're just doing CRUD interactions with the server and don't need pushed data in your app), and in that scenario using an AMFChannel with polling disabled works fine. > > Any channel type can be used with any service component. There's a general overview of the channel options and why you'd prefer one over another here, and the doc team is currently working on lots of improvements to the official docset in these areas: http://www.dcooper.org/blog/client/index.cfm?mode=entry&entry=8E1439AD-4\ E22-1671-58710DD528E9C2E7 > > In terms of which channels are used by the client to interact with the server, this is defined by the order that Channels are assigned to your client-side ChannelSet (if you set things up directly in code). > Or in the more automatic case, it's based on your services-config.xml file <default-channels> config, or a specific service's <default-channels> or a specific destination's <channels>. The best practice is to just define this list once at the top level in services-config.xml within the <services> section: > <services> > ... > <default-channels> > <channel ref="rtmp"/> > <channel ref="amf-polling"/> > </default-channels> > </services> > This default setting is applied to all services and destinations, unless you override at a specific service or destination. There's really no good use case to do that though, so just define the set of channels clients should use here at the top level. This list of Channels is what is "burned" into your swf when you compile with the -services option, and it's used to dynamically construct a ChannelSet on the client at runtime. > > There's no magic in the ChannelSet to determine which Channel from among the set to connect with - it starts with the first, and advances through until it successfully connects. If it looses connectivity, it continues through the list from its current position. So this component provides reconnect and high-availability by falling back through its options. So for the example above, the client will first try to connect via RTMP to your server-side RTMP endpoint's URL, and if that fails (say the client has a firewall blocking that port), it will fall back to a connect attempt over your AMFChannel (which has polling enabled). > > Hope that helps, > Seth > > From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Robert Csiki > Sent: Friday, May 16, 2008 8:33 AM > To: [email protected] > Subject: [flexcoders] LCDS and channel usage > > Hi there, > What channels are compatible with what service objects? For instance, I noticed the AMF family is not good for DataService. If you know of a ling that contains this service/channel matrix, I'd appreciate if you'll point it to me. > Also: for each of the available services (DataService, HttpService, WebService, RemoteService), whenever they support multiple channels, what's the order these channels are being tried by the framework? Is this order configurable? How the framework decides the channel to use (the "current channel")? > Thanks, Robert >

