2011-03-03 2 views
0

다음 문서 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을 읽고 있었는데 약간 혼란 스럽습니다. 우선이 기사는 2008 년에 나온 것이므로 .NET 4.0에서 변경된 사항이 있는지 확실하지 않습니다.IIS7.5 (WAS)의 비동기 WCF HTTP 모듈/처리기가 저에게 도움이되는 방법을 알아야합니다.

전적으로 동기 작업에 의존하는 클라이언트가 있습니다. 첫 번째 개념은 작업 스레드 수준의 비동기 동작과 클라이언트 수준의 비동기 동작 (wcf 프록시 호출시)의 차이입니다. 다음을 알고 싶습니다.

  • 비동기 WCF HTTP 모듈이 .NET 4.0의 기본 모듈입니까?
  • 그렇지 않은 경우 클라이언트 프록시를 비동기 적으로 호출합니다.
  • IIS6에서 비동기 WCF HTTP 모듈을 사용할 때의 문제는 서버에 들어오는 요청에 아무런 트롯이 없기 때문에 WCF에 대기중인 요청 수가 너무 많을 수 있기 때문입니다. 그러나 ASP.net 작업자 프로세스가 관련되지 않은 WAS를 처리 할 때 WCF가 너무 많은 요청 (예 : DoS)을 대기하는 것을 막는 메커니즘은 무엇입니까? MaxConcurrentRequestsPerCpu?

내 웹 서비스에 동시 요청을하고 작업이 완료 될 때까지 각 클라이언트가 대기해야하므로 내 주요 질문은 두 번째 글 머리 기호입니다. 그러나 이러한 웹 서버는 데이터베이스를 읽는 것과 같은 작업을 수행하므로 작업 완료가 지연됩니다 (1 ~ 2 초 정도는 아니지만 여전히 중요합니다). 이것을 기반으로 비동기 WCF HTTP 모듈을 활성화해야한다고 생각합니까?

+1

[윈도우 통신에 대한 개발자의 소개 재단 4] (http://msdn.microsoft.com/en-us/library/ee354381에 따르면. aspx), 비동기 모듈이 기본값이 될 것이라는 힌트는 보이지 않습니다.나 또한 그것을 사용/사용하는 방법에 대한 힌트를 볼 수 없습니다. –

답변

2

비동기 WCF HTTP 모듈은 .NET 4.0에서 통합 파이프 라인 모드를 사용하는 AppPool의 기본값입니다. 당신이 (\ WINDOWS \ SYSTEM32 \ inetsrv를 \ 설정 \ applicationHost.config 파일에서) 기본 핸들러를 보면

, 당신은 * SVC는을 위해 3 등록 된 처리기를 찾을 수 있습니다 : 전제 조건 속성

<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" /> 

주 각각 : 기본 모드에서 처음 2 번 실행되며, 마지막 모드 (WenLong의 블로그 게시물에서 언급 한 모드)는 통합 모드입니다.

  • .NET Framework 버전 : .NET 4.0
  • 관리되는 파이프 라인 모드 :

    이를 사용하려면, 당신은 단지 AppPool을 어떤에서 WCF 서비스가 실행되고 있는지 확인하는 필요가 통합

이것은 클라이언트 프록시에 영향을주지 않습니다. 이는 IIS와 WCF가 장기 실행 호출에서 공동 작업하는 방식에만 영향을 미칩니다. 더 잘 이해하려면 AsyncPage/AsyncController (MVC2/3)의 일부 블로그 게시물을보고 싶을 것입니다.

장기 실행 요청을 처리 할 스레드 수를 조정하려면 일반적으로 machine.config에서 processModel 섹션을 사용합니다. 조정 과정에 큰 기사 내용은 다음을 참조하십시오

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

관련 문제