.net - Need to know how the Asynchronous WCF HTTP Module/Handler in IIS7.5 (WAS) can benefit me -


i reading following article http://blogs.msdn.com/b/wenlong/archive/2008/08/13/orcas-sp1-improvement-asynchronous-wcf-http-module-handler-for-iis7-for-better-server-scalability.aspx , little confused. first of article 2008 i'm not sure if changed in .net 4.0.

i have client relies on synchronous operations. first concept have hard time grasping difference between asynchronous behavior on worker thread level , asynchronous behavior on client level (when calling wcf proxies). know following:

  • is asynchronous wcf http module default module in .net 4.0?
  • if not, , enable it, client proxy calls asynchronous well.
  • i understand problem using asynchronous wcf http module in iis6 because there no throtling on incoming requests server, there can potentially high number of requests being queued wcf. when dealing was, asp.net worker process not involved, mechanism prevents wcf queueing many requests (i.e. dos)? maxconcurrentrequestspercpu?

my main question second bullet point, because have concurrent requests web services , need have each client request wait until operation complete. however, these webserivices doing things reading database, delays completing of operations (not ~ 1 2 sec that's still significant enough). based on this, think should enable asynchronous wcf http module if isn't already?

the asynchronous wcf http module default in .net 4.0 apppool using integrated pipeline mode.

if @ default handlers (in \windows\system32\inetsrv\config\applicationhost.config), you'll find 3 registered handlers *.svc:

<add name="svc-isapi-4.0_32bit" path="*.svc" verb="*" modules="isapimodule" scriptprocessor="c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll" precondition="classicmode,runtimeversionv4.0,bitness32" responsebufferlimit="0" /> <add name="svc-isapi-4.0_64bit" path="*.svc" verb="*" modules="isapimodule" scriptprocessor="c:\windows\microsoft.net\framework64\v4.0.30319\aspnet_isapi.dll" precondition="classicmode,runtimeversionv4.0,bitness64" responsebufferlimit="0" /> <add name="svc-integrated-4.0" path="*.svc" verb="*" type="system.servicemodel.activation.servicehttphandlerfactory, system.servicemodel.activation, version=4.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" precondition="integratedmode,runtimeversionv4.0" /> 

note precondition attribute on each: first 2 run in classic mode, while last (which 1 mentioned in wenlong's blog post) integrated mode.

to enable this, need ensure apppool in wcf service running has:

  • .net framework version: .net 4.0
  • managed pipeline mode: integrated

this not affect client proxies; affects way iis , wcf collaborate on long-running calls. might want @ blog posts on asyncpage/asynccontroller (mvc2/3) understand better.

for tuning number of threads service long-running requests, typically use processmodel section (in machine.config). great article on tuning process, see:

http://blogs.msdn.com/b/endpoint/archive/2011/05/04/wcf-scales-up-slowly-with-bursts-of-work.aspx


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -