2010-04-14 6 views
0

우리는 여러 클라이언트의 데이터를 수신하고 다른 WCF 서비스를 호출하는 다중 스레드 서버를 개발했습니다. 2 개 (또는 그 이상) 다른 클라이언트가 서버를 동시에 호출하고 서버가 두 개의 다른 스레드에서 원격 WCF를 동시에 호출하려고하는 경우가 많습니다. 특히 원격 WCF 서비스가 중단 된 경우 몇 가지 문제가 발생했습니다. 우리가 올바르게하고 있습니까? 이 시나리오에 가장 적합한 방법이 있습니까?WCF 다중 스레드 호출

+0

문제를 더 자세히 설명해 주실 수 있습니까? 이것은 이상하거나 부당한 패턴으로 보이지 않습니다. – Steve

답변

0

발생하는 문제 유형에 대해 좀 더 구체적으로 설명해야하지만, 멱등 원과 상태 저장 서비스에 대해 읽어 볼 수는 있습니다.

2

대부분의 경우 가장 좋은 방법은 이것이다 :

  • 클라이언트가 클라이언트의 각 요청 자체, 자연 그대로의 서버 클래스 인스턴스를 가져옵니다
  • 는 "통화 당"패턴으로 WCF 서비스를 호출하는 요청을 처리하고 처리가 끝나면 폐기 처리합니다.
  • 따라서 서버 클래스는 단일 스레드, 재진입 성이 아니며 모든 멀티 태스킹 문제를 처리 할 필요가 없습니다.
  • 서버 클래스는 상태가없고 보유하지 않습니다. 모든 서버 리소스 또는 무엇이든에
  • "상태"또는 호출간에 유지되어야하는 데이터는 적절한 위치에 저장됩니다. 데이터베이스

이것은 가장 쉬운 설정이며 최소한 80 % 이상을 선택하는 것이 가장 좋습니다.

다양한 우수 옵션에 대한 배경 지식이있는 훌륭한 MSDN Magazine 기사 Discover Mighty Instance Management Techniques For Developing WCF Apps을 확인하십시오.

+1

내가 할 수있는 것보다 훨씬 간결하게 말했습니다. 이 시나리오의 서비스 속성이'InsanceContextMode.PerCall'이라고 덧붙일 것이다. 싱글 톤 또는 재진입 서비스를 사용하는 경우 모든 종류의 문제가 발생할 수 있습니다. – roufamatic