나는 다음과 같은 설정으로 WCF 서비스를 가지고 이 WCF 서비스에 멀티 스레드 방식으로 액세스하는 클라이언트가 있습니다.WCF ConcurrencyMode.Multiple 연결 모범 사례와 캐싱
내가 아는 한 서로 다른 스레드를 차단하는 스레드를 피하기 위해 각 스레드마다 서비스에 대한 새 연결을 열어야한다. 이 경우
- 얼마나 비싼
Open()
호출 (서비스는 동일한 컴퓨터에)있다? - 내 클라이언트 클래스를 캐시하거나 풀링할까요? (은
ClientBase
에서 파생됩니까?) 또는 WCF는 SQLConnection Pooling과 유사한 연결을위한 투명한 풀을 제공합니까?
NetNamedPipe on-machine 통신과 같은 시나리오에서 ConcurrencyMode의 추가 된 복잡성은 이점으로 볼 수 없습니다. 이것은 단지 서비스 코드를 훨씬 복잡하고 에러가 발생하기 쉬운 것으로 만듭니다 .... 클라이언트 프록시 생성에 저장된 몇 나노초와 비교할 때 문제가 발생할 수 있고 유지 보수가 필요하다면 잘 모르겠습니다 ..... –
멀티 스레드로 작동하지 않을 것입니다. 즉, 클라이언트에서 멀티 쓰레드는 서로 기다릴 것이므로 무의미합니다. 밀리 세컨드 콜이 아니라 초입니다. 아니면 나는 무엇이든 놓치고있다. –