NetTcpBinding
서비스와 BasicHttpBinding
서비스를 사용하여 응용 프로그램을 만듭니다. 이러한 서비스를 통해 클라이언트는 응용 프로그램에 요청을 보냅니다. 이러한 요청은 Queue
개체 (인바운드 요청 큐)에 저장해야합니다.다중 스레드로 큐에 동시 액세스
- 두 서비스 모두 클라이언트의 동시 호출을 허용해야합니다.
- 이는 두 서비스가 수신 된 요청을 추가하기 위해 대기열에 동시에 액세스해야 함을 의미합니다.
- 또한 요청을 처리하기 위해 다른 스레드가 큐에 액세스해야합니다.
나는 ConcurrencyMode.Multiple
을 사용할 수 있으며 동시에 많은 전화가 걸릴 수 있습니다. 그러나 이것이 큐에 대한 동시 액세스를 보장하지는 않습니다. 두 개의 다른 스레드에 두 ServiceHost
을 넣어야합니까? 예 :
- 첫 번째 스레드는 대기열에서 요청을 대기열에서 제외하고 처리합니다.
- 두 번째 스레드는
NetTcpBinding
서비스를 인스턴스화하고 큐에 새 요청을 대기열에 포함시킵니다. 또한 콜백을 통해 응답을 보냅니다. - 세 번째 스레드는
BasicHttpBinding
서비스를 인스턴스화하고 큐에 새 요청을 대기열에 포함시킵니다.
이것은 제 생각입니다. 나는 거의 초보자이기 때문에, 조언을 해줄 수 있다면 감사 할 것입니다. 아마도 큐에 동시에 액세스하는 세 개의 스레드를 작성해야합니다. 즉, 처음 두 스레드가 큐에 임의의 요청을 대기열에 넣을 수 있으며 세 번째 스레드는 이러한 요청을 사용합니다.
대기열에 묶여 있습니까? ConcurrentQueue 또는 BlockingCollection을 사용할 수 있습니까? 이것은 꽤 표준적인 생산자/소비자 문제입니다. – Joe
@Joe : 지금은'Queue','Dictionary' 등의 스레드로부터 안전하지 않은 컬렉션을 사용해야합니다. – enzom83
특별한 이유는 무엇입니까? 휠을 다시 구현하는 것뿐입니다. – Joe