
데이터베이스 액세스를 위해 웹 서비스 메서드를 호출하는 Windows 애플리케이션이 있습니다. IIS에서 WCF 서비스에 대해 긴(15초 이상) 비동기 웹 서비스 호출을 수행하는 경우를 발견했습니다. UI가 다른 차단(이전 코드)을 수행하는 동안 웹 서비스 호출을 수행하는 경우 해당 추가 호출은 초기 비동기 호출이 완료될 때까지 차단됩니다.
UI와 웹 서비스가 모두 IIS Express가 포함된 Visual Studio에서 실행되는 경우에는 이런 일이 발생하지 않습니다. 차단 호출은 빠르고 모든 작업은 긴 비동기 호출이 끝나기 오래 전에 완료됩니다.
웹 서비스에는 모두 다음이 포함됩니다.
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
또한 어디에서나 maxConnections="500"이 됩니다.
우리는 IIS가 IIS Express와 동일한 방식으로 동시 웹 서비스 호출을 동시에 처리하도록 만들고 싶습니다.
...
이것이 도움이 된다면, 우리는 객체를 검색합니다. 검색은 기준을 충족하는 상위 50개(기본값) 항목을 반환하는 동시에 동일한 쿼리에서 count(*)에 대한 비동기 호출을 수행합니다. 개수 쿼리는 매우 오랜 시간이 걸릴 수 있습니다. 사용자는 때때로 총 개수가 무엇인지 알고 싶어하지만 일반적으로 개수가 다시 표시되기 오래 전에 결과 목록에서 개체를 열 수 있기를 원한다고 주장합니다. 개체를 여는 것은 동기식 웹 서비스 호출이 들어오는 곳입니다. 이전에는 검색 결과와 개수가 모두 동일한 웹 서비스 메서드의 일부였습니다.