<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: When to use Async Service Operations</title>
	<atom:link href="http://kennyw.com/work/indigo/258/feed" rel="self" type="application/rss+xml" />
	<link>http://kennyw.com/work/indigo/258</link>
	<description>Kenny Wolf</description>
	<lastBuildDate>Thu, 02 Feb 2012 02:21:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Boaz</title>
		<link>http://kennyw.com/work/indigo/258/comment-page-1#comment-152759</link>
		<dc:creator>Boaz</dc:creator>
		<pubDate>Thu, 25 Dec 2008 09:19:07 +0000</pubDate>
		<guid isPermaLink="false">http://kennyw.com/indigo/258#comment-152759</guid>
		<description>There is something about Async operations I&#039;m unclear about:

Consider this working scenario:
1. I don&#039;t implement asynchronous service operations in the WCF service.
2. I call service operations asynchronously from the client using AsyncPattern=true.
3. I set InstanceContextMode.PerCall

Does this guarantee me multi threaded parallel operations on the server?
And also, with InstanceContextMode.PerCall, what happens after MaxConcurrentCalls have been reached. Are requests queued?

Thanks,
Boaz.</description>
		<content:encoded><![CDATA[<p>There is something about Async operations I&#8217;m unclear about:</p>
<p>Consider this working scenario:<br />
1. I don&#8217;t implement asynchronous service operations in the WCF service.<br />
2. I call service operations asynchronously from the client using AsyncPattern=true.<br />
3. I set InstanceContextMode.PerCall</p>
<p>Does this guarantee me multi threaded parallel operations on the server?<br />
And also, with InstanceContextMode.PerCall, what happens after MaxConcurrentCalls have been reached. Are requests queued?</p>
<p>Thanks,<br />
Boaz.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WCF and the AsyncPattern property (part 2) &#171; Pedro Félix&#8217;s shared memory</title>
		<link>http://kennyw.com/work/indigo/258/comment-page-1#comment-114406</link>
		<dc:creator>WCF and the AsyncPattern property (part 2) &#171; Pedro Félix&#8217;s shared memory</dc:creator>
		<pubDate>Sat, 28 Jun 2008 13:05:47 +0000</pubDate>
		<guid isPermaLink="false">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>[...] 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; [...]</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/work/indigo/258/comment-page-1#comment-114193</link>
		<dc:creator>WCF and the AsyncPattern (part 2) &#171; Pedro Félix&#8217;s shared memory</dc:creator>
		<pubDate>Fri, 27 Jun 2008 13:41:22 +0000</pubDate>
		<guid isPermaLink="false">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>[...] Similarly, Kenny Wolf states that  If you have an operation that is blocking (accessing SQL, Channels, etc) then you should use AsyncPa&#8230; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kenny</title>
		<link>http://kennyw.com/work/indigo/258/comment-page-1#comment-101270</link>
		<dc:creator>Kenny</dc:creator>
		<pubDate>Sat, 03 May 2008 18:12:43 +0000</pubDate>
		<guid isPermaLink="false">http://kennyw.com/indigo/258#comment-101270</guid>
		<description>Yes, we do run on IO completion threads by default. And I&#039;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&#039;re on. It&#039;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/work/indigo/258/comment-page-1#comment-100705</link>
		<dc:creator>dominick</dc:creator>
		<pubDate>Thu, 01 May 2008 19:26:20 +0000</pubDate>
		<guid isPermaLink="false">http://kennyw.com/indigo/258#comment-100705</guid>
		<description>sorry - i meant 1000 IO threads.</description>
		<content:encoded><![CDATA[<p>sorry &#8211; i meant 1000 IO threads.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dominick</title>
		<link>http://kennyw.com/work/indigo/258/comment-page-1#comment-100387</link>
		<dc:creator>dominick</dc:creator>
		<pubDate>Wed, 30 Apr 2008 04:55:32 +0000</pubDate>
		<guid isPermaLink="false">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&#039;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 &#8211; 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>

