2012-12-20 5 views
2

한 번에 모든 클라이언트에서 한 요청을 처리하려는 WCF 서비스가 있습니다. 클라이언트 A의 요청을 처리하고 클라이언트 A가 끝날 때까지 클라이언트 B가 기다려서 서비스가 보려고하기를 원합니다. 나는 아래의 코드가 이것을 달성했다고 생각했다.WCF 서비스 웹 서비스 Concurrency.Single

[ServiceContract] 
public interface IRestServiceImpl 
{...} 

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)] 
public class RestServiceImpl : IRestServiceImpl 
{...} 

한 번에 하나의 클라이언트 만 처리하고 다른 클라이언트가 대기열에서 대기하도록 허용하려면 어떻게합니까?

답변

0

서비스의 인스턴스 수와 동시성 모드를 제어해야합니다. 기본적으로 서비스는 InstanceContextMode.PerSession으로 구성됩니다. 즉, 모든 클라이언트 A의 요청이 순차적으로 처리되고 클라이언트 B도 순차적으로 처리되지만 동일한 서비스 인스턴스를 사용하지 않기 때문에 서로에 대해 순차적으로 처리되지 않습니다. 수정

시도하여 다음과 ServiceBehavior과 같이 주제에 대한 자세한 내용은

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, 
       InstanceContextMode=InstanceContextMode.Single)] 
public class RestServiceImpl : IRestServiceImpl 
{...} 

, 곧 질문을 게시하고 테스트 한 후 나는 이러한 설정에 발견했던 MSDN documentation on Sessions, Instancing and Concurrency.

+0

을 확인하십시오. 그들이 내가 필요한 방식으로 내 상황을 견디고있는 것처럼 보입니다. 귀하의 답변을 주셔서 감사합니다. – Martin