<?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: Keeping Track Of State In Asynchronous Callbacks</title>
	<atom:link href="http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/feed/" rel="self" type="application/rss+xml" />
	<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/</link>
	<description>Towards Intelligent Systems</description>
	<pubDate>Thu, 20 Nov 2008 17:19:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Generation 5 &#187; Converting A Synchronous Program Into An Asynchronous Program</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-638</link>
		<dc:creator>Generation 5 &#187; Converting A Synchronous Program Into An Asynchronous Program</dc:creator>
		<pubDate>Thu, 14 Aug 2008 16:30:09 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-638</guid>
		<description>[...] it&#8217;s useful for f() to correspond to an object, of which the fN() functions are methods. [1] [2] [...]</description>
		<content:encoded><![CDATA[<p>[...] it&#8217;s useful for f() to correspond to an object, of which the fN() functions are methods. [1] [2] [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Generation 5 &#187; Getting back to the UI Thread in Silverlight 2 Beta 2</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-550</link>
		<dc:creator>Generation 5 &#187; Getting back to the UI Thread in Silverlight 2 Beta 2</dc:creator>
		<pubDate>Thu, 26 Jun 2008 14:00:17 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-550</guid>
		<description>[...] but what if you want to pass some parameters to the function that updates the UI.  The usual three choices for passing state in asynchronous applications apply,  but it&#8217;s particularly easy and fun to use a closure [...]</description>
		<content:encoded><![CDATA[<p>[...] but what if you want to pass some parameters to the function that updates the UI.  The usual three choices for passing state in asynchronous applications apply,  but it&#8217;s particularly easy and fun to use a closure [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-492</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 06 Jun 2008 02:43:00 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-492</guid>
		<description>Well,  in a perfect world,  we'd design the client-server protocol so that all the information that the client needs to handle a UI event comes in one big batch...  Then you don't need to worry about choreography,  error handling and all those hairy issues.  See &lt;a href="http://gen5.info/q/2008/03/27/managing-concurrency-with-asynchronous-http-requests/" rel="nofollow"&gt;this article.&lt;/a&gt;

In the real world we need to talk to server apps that we don't control...  So we have to deal with those issues.</description>
		<content:encoded><![CDATA[<p>Well,  in a perfect world,  we&#8217;d design the client-server protocol so that all the information that the client needs to handle a UI event comes in one big batch&#8230;  Then you don&#8217;t need to worry about choreography,  error handling and all those hairy issues.  See <a href="http://gen5.info/q/2008/03/27/managing-concurrency-with-asynchronous-http-requests/" rel="nofollow">this article.</a></p>
<p>In the real world we need to talk to server apps that we don&#8217;t control&#8230;  So we have to deal with those issues.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Hansen</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-487</link>
		<dc:creator>Thomas Hansen</dc:creator>
		<pubDate>Thu, 05 Jun 2008 19:18:06 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-487</guid>
		<description>@admin
Yes I totally agree, in fact I by "chance" stumbled into the problem when adding up a timer onto my page and then frenetically clicked a button at the same time and by accident discovered that sometimes the ViewState went completely *bananas* and the page became in an "undefined state"...
Then I spent more than a WEEK in fact re-creating our core to give support for sequential requests...

I think that yes you are right, there might exist some extreme scenarios where it makes sense to have more than one running at the same time, though if they're both running towards the same server, you will get OTHER problems (2 HTTP connections per IP constraint in most browsers)

So I think probably if you are going to use them you would normally have them first of all run towards different IPs (servers) then also in addition it would be *WISE* to make sure they're not updating the same parts of the UI...

Though for us (Gaia Ajax Widgets) this is completely abstract and would never happen unless people completely mis-used our framework in ways it was never intended to be used for...

On the server creating more than one request towards OTHER servers (WebServices and so on) asynchronously though is a totally different story...

.t</description>
		<content:encoded><![CDATA[<p>@admin<br />
Yes I totally agree, in fact I by &#8220;chance&#8221; stumbled into the problem when adding up a timer onto my page and then frenetically clicked a button at the same time and by accident discovered that sometimes the ViewState went completely *bananas* and the page became in an &#8220;undefined state&#8221;&#8230;<br />
Then I spent more than a WEEK in fact re-creating our core to give support for sequential requests&#8230;</p>
<p>I think that yes you are right, there might exist some extreme scenarios where it makes sense to have more than one running at the same time, though if they&#8217;re both running towards the same server, you will get OTHER problems (2 HTTP connections per IP constraint in most browsers)</p>
<p>So I think probably if you are going to use them you would normally have them first of all run towards different IPs (servers) then also in addition it would be *WISE* to make sure they&#8217;re not updating the same parts of the UI&#8230;</p>
<p>Though for us (Gaia Ajax Widgets) this is completely abstract and would never happen unless people completely mis-used our framework in ways it was never intended to be used for&#8230;</p>
<p>On the server creating more than one request towards OTHER servers (WebServices and so on) asynchronously though is a totally different story&#8230;</p>
<p>.t</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-480</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 04 Jun 2008 19:09:02 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-480</guid>
		<description>@Thomas,  your solution is a correct way to use AJAX and makes a lot of sense.

There is one case where it does make sense to generate concurrent requests,  and that's when information from several requests is going to be combined.  Running requests in parallel can greatly reduce the effects of latency -- in many cases this can make a large difference in performance (much more than two.)

I think most people doing AJAX in Javascript can get away with being ignorant about concurrency problems because they're bolting simple behaviors onto an HTML page:  when something does go wrong,  the situation is usually recoverable.  I know that I programmed a little AJAX here and there for years and never experienced concurrency problems -- then I built a GWT app!

People working with tools like Silverlight, GWT and Flex (as well as a few brave Javascript Ninjas) are building larger applications that are going to have more problems.  It's time to spread the word about the problems and the solutions!</description>
		<content:encoded><![CDATA[<p>@Thomas,  your solution is a correct way to use AJAX and makes a lot of sense.</p>
<p>There is one case where it does make sense to generate concurrent requests,  and that&#8217;s when information from several requests is going to be combined.  Running requests in parallel can greatly reduce the effects of latency &#8212; in many cases this can make a large difference in performance (much more than two.)</p>
<p>I think most people doing AJAX in Javascript can get away with being ignorant about concurrency problems because they&#8217;re bolting simple behaviors onto an HTML page:  when something does go wrong,  the situation is usually recoverable.  I know that I programmed a little AJAX here and there for years and never experienced concurrency problems &#8212; then I built a GWT app!</p>
<p>People working with tools like Silverlight, GWT and Flex (as well as a few brave Javascript Ninjas) are building larger applications that are going to have more problems.  It&#8217;s time to spread the word about the problems and the solutions!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Hansen</title>
		<link>http://gen5.info/q/2008/06/02/keeping-track-of-state-in-asynchronous-callbacks/#comment-471</link>
		<dc:creator>Thomas Hansen</dc:creator>
		<pubDate>Tue, 03 Jun 2008 16:44:40 +0000</pubDate>
		<guid isPermaLink="false">http://gen5.info/q/?p=27#comment-471</guid>
		<description>Or you could use an Ajax Framework that queues up the requests which is the only sane thing to do when you have a server/client solution and waits for the previous one to finish before creating a new one ;)
(Hint; follow my link)
Nice blog though, and VERY important to be aware of, though probably less than 1% of ASP.NET AJAX developers are... :)</description>
		<content:encoded><![CDATA[<p>Or you could use an Ajax Framework that queues up the requests which is the only sane thing to do when you have a server/client solution and waits for the previous one to finish before creating a new one <img src='http://gen5.info/q/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
(Hint; follow my link)<br />
Nice blog though, and VERY important to be aware of, though probably less than 1% of ASP.NET AJAX developers are&#8230; <img src='http://gen5.info/q/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>
