<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: BlazeDS vs LiveCycleDS</title>
	<atom:link href="http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/</link>
	<description>News and Information about Adobe Flex &#38; Adobe AIR by Rich Tretola</description>
	<pubDate>Fri, 21 Nov 2008 12:52:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>By: everythingflex</title>
		<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-567</link>
		<dc:creator>everythingflex</dc:creator>
		<pubDate>Tue, 08 Jul 2008 11:49:18 +0000</pubDate>
		<guid isPermaLink="false">http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-567</guid>
		<description>No yet, but what we are testing is not a single server. It will be a cluster.</description>
		<content:encoded><![CDATA[<p>No yet, but what we are testing is not a single server. It will be a cluster.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Niraj Sonar</title>
		<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-570</link>
		<dc:creator>Niraj Sonar</dc:creator>
		<pubDate>Mon, 07 Jul 2008 07:55:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-570</guid>
		<description>Hi,

Have you got the results of load testing. Can you share the same with us for concurrent users. I want to know how many concurrent users can be supported by blazeDS in single instance. Can we scale it up for further ?</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>Have you got the results of load testing. Can you share the same with us for concurrent users. I want to know how many concurrent users can be supported by blazeDS in single instance. Can we scale it up for further ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: everythingflex</title>
		<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-568</link>
		<dc:creator>everythingflex</dc:creator>
		<pubDate>Thu, 26 Jun 2008 08:40:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-568</guid>
		<description>We are getting ready to do some load testing next week on a multi-server BlazeDS architecture so the results will soon show themselves.</description>
		<content:encoded><![CDATA[<p>We are getting ready to do some load testing next week on a multi-server BlazeDS architecture so the results will soon show themselves.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: andy matthews</title>
		<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-569</link>
		<dc:creator>andy matthews</dc:creator>
		<pubDate>Thu, 26 Jun 2008 00:58:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-569</guid>
		<description>I spoke with Adam Lehman at Webmaniacs this year and he specifically said that use of LCDS for a production app (even with a multi-proc server) was "okay with Adobe" unless your app was expected to have hundreds of concurrent users. Blaze can handle around 500 at a time, whereas LCDS is 10 times that (5000 plus).

He even stated to me "I'd even be willing to put that in an email". So take that as you will.</description>
		<content:encoded><![CDATA[<p>I spoke with Adam Lehman at Webmaniacs this year and he specifically said that use of LCDS for a production app (even with a multi-proc server) was &#8220;okay with Adobe&#8221; unless your app was expected to have hundreds of concurrent users. Blaze can handle around 500 at a time, whereas LCDS is 10 times that (5000 plus).</p>
<p>He even stated to me &#8220;I&#8217;d even be willing to put that in an email&#8221;. So take that as you will.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: everythingflex</title>
		<link>http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-566</link>
		<dc:creator>everythingflex</dc:creator>
		<pubDate>Fri, 08 Feb 2008 00:59:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.everythingflex.com/2008/01/31/blazeds-vs-livecycleds/#comment-566</guid>
		<description>This was sent to me by Seth Hodgson so I thought I would share it:

It depends on what features your application is using. If you're just using RPC services (RemoteObject, HTTPService, WebService) over an AMFChannel from the client to the server, there's no difference in performance between BlazeDS and LCDS. That's just traditional HTTP requests/responses between the client and sever - so you're limited by OS/hardware specs to some max request per second processing capacity for your box (this limit would also depend on what your RemoteObjects are doing, etc.)

If you application is using messaging (or auto-sync data management), that requires a channel that can get messages from the server down to the client. There's simple polling, and that behaves the same in BlazeDS and LCDS. But the better "push" channels is where things differ significantly. BlazeDS supports long-polling and streaming over HTTP to "push" data to the client but it has to manage this through the servlet API which has the unfortunate restriction right now of mandating blocking IO. We're participating in the Servlet 3 JSR which will add non-blocking IO APIs but that won't be available for some time in a standard fashion across all the containers we support.

For traditional request/response style interaction between the client and server blocking IO was reasonable, but for server data push and messaging, it's not so good.

LCDS provides support for the RTMPChannel (direct duplex socket connection between the client and server) as well as non-blocking long-polling and streaming support over HTTP that bypasses the servlet API and its blocking IO limitation. All of these options in LCDS are built on top of the Java NIO APIs.

Non-blocking IO doesn't require a thread per connection sitting blocked in a read() call on the underlying socket. So you can have hundreds, thousands, etc. connections without the expense of a thread per each. You can mitigate that expense in BlazeDS by tuning down the stack size for your Java threads, but that's still much more than 0 overhead.

In terms of the total number of "push" connections a BlazeDS or LCSD server will support, back of the envelope estimates are in the hundreds for BlazeDS (because of servlet blocking IO and the fact that servlet containers generally don't have more than hundreds of threads in their request handler thread pool) and in the thousands for LCDS thanks to Java NIO. Whether you're talking about 5K or 10K depends on your OS, hardware and application. At some point, depending on the number of messages you're sending and the amount of processing and IO your're doing you'll saturate your box.

There's more detail regarding the various channel options in BlazeDS and LCDS and when to use what posted here: http://www.dcooper.org/blog/client/index.cfm?mode=entry&#038;entry=8E1439AD-4E22-1671-58710DD528E9C2E7

RTMP is availble in the current LCDS release but the NIO-based long polling and streaming endpoints for LCDS are not - get on the LCSD beta program if you want to give them a try.</description>
		<content:encoded><![CDATA[<p>This was sent to me by Seth Hodgson so I thought I would share it:</p>
<p>It depends on what features your application is using. If you&#8217;re just using RPC services (RemoteObject, HTTPService, WebService) over an AMFChannel from the client to the server, there&#8217;s no difference in performance between BlazeDS and LCDS. That&#8217;s just traditional HTTP requests/responses between the client and sever - so you&#8217;re limited by OS/hardware specs to some max request per second processing capacity for your box (this limit would also depend on what your RemoteObjects are doing, etc.)</p>
<p>If you application is using messaging (or auto-sync data management), that requires a channel that can get messages from the server down to the client. There&#8217;s simple polling, and that behaves the same in BlazeDS and LCDS. But the better &#8220;push&#8221; channels is where things differ significantly. BlazeDS supports long-polling and streaming over HTTP to &#8220;push&#8221; data to the client but it has to manage this through the servlet API which has the unfortunate restriction right now of mandating blocking IO. We&#8217;re participating in the Servlet 3 JSR which will add non-blocking IO APIs but that won&#8217;t be available for some time in a standard fashion across all the containers we support.</p>
<p>For traditional request/response style interaction between the client and server blocking IO was reasonable, but for server data push and messaging, it&#8217;s not so good.</p>
<p>LCDS provides support for the RTMPChannel (direct duplex socket connection between the client and server) as well as non-blocking long-polling and streaming support over HTTP that bypasses the servlet API and its blocking IO limitation. All of these options in LCDS are built on top of the Java NIO APIs.</p>
<p>Non-blocking IO doesn&#8217;t require a thread per connection sitting blocked in a read() call on the underlying socket. So you can have hundreds, thousands, etc. connections without the expense of a thread per each. You can mitigate that expense in BlazeDS by tuning down the stack size for your Java threads, but that&#8217;s still much more than 0 overhead.</p>
<p>In terms of the total number of &#8220;push&#8221; connections a BlazeDS or LCSD server will support, back of the envelope estimates are in the hundreds for BlazeDS (because of servlet blocking IO and the fact that servlet containers generally don&#8217;t have more than hundreds of threads in their request handler thread pool) and in the thousands for LCDS thanks to Java NIO. Whether you&#8217;re talking about 5K or 10K depends on your OS, hardware and application. At some point, depending on the number of messages you&#8217;re sending and the amount of processing and IO your&#8217;re doing you&#8217;ll saturate your box.</p>
<p>There&#8217;s more detail regarding the various channel options in BlazeDS and LCDS and when to use what posted here: <a href="http://www.dcooper.org/blog/client/index.cfm?mode=entry&#038;entry=8E1439AD-4E22-1671-58710DD528E9C2E7" rel="nofollow">http://www.dcooper.org/blog/client/index.cfm?mode=entry&#038;entry=8E1439AD-4E22-1671-58710DD528E9C2E7</a></p>
<p>RTMP is availble in the current LCDS release but the NIO-based long polling and streaming endpoints for LCDS are not - get on the LCSD beta program if you want to give them a try.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

