<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: When to use Async Service Operations</title>
	<link>http://kennyw.com/indigo/258</link>
	<description>Kenny Wolf's Thoughts of the Moment</description>
	<pubDate>Sat, 11 Oct 2008 00:17:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>

	<item>
		<title>By: WCF and the AsyncPattern property (part 2) &#171; Pedro Félix&#8217;s shared memory</title>
		<link>http://kennyw.com/indigo/258#comment-114406</link>
		<author>WCF and the AsyncPattern property (part 2) &#171; Pedro Félix&#8217;s shared memory</author>
		<pubDate>Sat, 28 Jun 2008 13:05:47 +0000</pubDate>
		<guid>http://kennyw.com/indigo/258#comment-114406</guid>
		<description>[...] Similarly, Kenny Wolf (from the WCF/WF group) states that  If you have an operation that is blocking (accessing SQL, Channels, etc) then you should use AsyncPa... [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Similarly, Kenny Wolf (from the WCF/WF group) states that  If you have an operation that is blocking (accessing SQL, Channels, etc) then you should use AsyncPa&#8230; [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WCF and the AsyncPattern (part 2) &#171; Pedro Félix&#8217;s shared memory</title>
		<link>http://kennyw.com/indigo/258#comment-114193</link>
		<author>WCF and the AsyncPattern (part 2) &#171; Pedro Félix&#8217;s shared memory</author>
		<pubDate>Fri, 27 Jun 2008 13:41:22 +0000</pubDate>
		<guid>http://kennyw.com/indigo/258#comment-114193</guid>
		<description>[...] Similarly, Kenny Wolf states that  If you have an operation that is blocking (accessing SQL, Channels, etc) then you should use AsyncPa... [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Similarly, Kenny Wolf states that  If you have an operation that is blocking (accessing SQL, Channels, etc) then you should use AsyncPa&#8230; [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kenny</title>
		<link>http://kennyw.com/indigo/258#comment-101270</link>
		<author>Kenny</author>
		<pubDate>Sat, 03 May 2008 18:12:43 +0000</pubDate>
		<guid>http://kennyw.com/indigo/258#comment-101270</guid>
		<description>Yes, we do run on IO completion threads by default. And I'm not recommending that you should just call QueueUserWorkItem to get off of the WCF dispatch thread. However, if your work is naturally async (and a Begin/End set of APIs should only be exposed if the API is directly or indirectly using I/O), then you will benefit from using the WCF async pattern.  You can calculate pi in a synchronous operation, even if it takes a long time. But if you are holding an idle thread (i.e. calling Thread.Sleep, or out to a database, etc) then you want to let the system reuse the thread that you're on. It's possible that the thread you release will get recycled into the thread that completes your async operation, or maybe not. But either way you want to be concious of system resources and playing nice with the.</description>
		<content:encoded><![CDATA[<p>Yes, we do run on IO completion threads by default. And I&#8217;m not recommending that you should just call QueueUserWorkItem to get off of the WCF dispatch thread. However, if your work is naturally async (and a Begin/End set of APIs should only be exposed if the API is directly or indirectly using I/O), then you will benefit from using the WCF async pattern.  You can calculate pi in a synchronous operation, even if it takes a long time. But if you are holding an idle thread (i.e. calling Thread.Sleep, or out to a database, etc) then you want to let the system reuse the thread that you&#8217;re on. It&#8217;s possible that the thread you release will get recycled into the thread that completes your async operation, or maybe not. But either way you want to be concious of system resources and playing nice with the.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dominick</title>
		<link>http://kennyw.com/indigo/258#comment-100705</link>
		<author>dominick</author>
		<pubDate>Thu, 01 May 2008 19:26:20 +0000</pubDate>
		<guid>http://kennyw.com/indigo/258#comment-100705</guid>
		<description>sorry - i meant 1000 IO threads.</description>
		<content:encoded><![CDATA[<p>sorry - i meant 1000 IO threads.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dominick</title>
		<link>http://kennyw.com/indigo/258#comment-100387</link>
		<author>dominick</author>
		<pubDate>Wed, 30 Apr 2008 04:55:32 +0000</pubDate>
		<guid>http://kennyw.com/indigo/258#comment-100387</guid>
		<description>Hi Kenny, 

my understanding was that WCF requests already run on IO completion port threads (IO thread pool) which already have the characteristics to optimize work when waiting for IO.

In ASP.NET you typically use async handler to free up a worker thread (and dispatch to an IO thread instead). But worker threads are a very sparse resource - whereas WCF has 100 IO threads by default.

So I wonder what's the benefit in WCF using async pattern? On which thread pool does the async work end up?

cheers, 
dominick</description>
		<content:encoded><![CDATA[<p>Hi Kenny, </p>
<p>my understanding was that WCF requests already run on IO completion port threads (IO thread pool) which already have the characteristics to optimize work when waiting for IO.</p>
<p>In ASP.NET you typically use async handler to free up a worker thread (and dispatch to an IO thread instead). But worker threads are a very sparse resource - whereas WCF has 100 IO threads by default.</p>
<p>So I wonder what&#8217;s the benefit in WCF using async pattern? On which thread pool does the async work end up?</p>
<p>cheers,<br />
dominick</p>
]]></content:encoded>
	</item>
</channel>
</rss>
