문제

별도의 Windows 서비스에서 실행되는 원격 싱글톤 서버가 있습니다(RemotingService라고 부르겠습니다).RemotingService의 클라이언트는 ASP.NET 인스턴스입니다(많음).

현재 원격 클라이언트는 RemotingService를 호출하고 RemotingService 호출이 서비스되는 동안 차단합니다.그러나 원격 서비스는 asp.net 작업자 스레드가 상당히 오랜 시간(4-5초) 동안 차단될 정도로 (더 많은 RPC 호출 및 복잡한 알고리즘으로) 충분히 복잡해지고 있습니다.

에 따르면 이 msdn 기사, 각 원격 RPC에 대해 asp.net 작업자 스레드가 차단되므로 이렇게 하면 확장이 잘 되지 않습니다.asp.net 작업자 스레드를 확보하려면 비동기 처리기로 전환하는 것이 좋습니다.

비동기 핸들러의 목적은 핸들러가 원래 요청을 처리하는 동안 추가 요청을 서비스하기 위해 ASP.NET 스레드 풀 스레드를 확보하는 것입니다.

원격 호출이 여전히 스레드 풀에서 스레드를 사용한다는 점을 제외하면 괜찮은 것 같습니다.asp.net 작업자 스레드와 동일한 스레드 풀입니까?

asp.net 작업자 스레드를 확보할 수 있도록 원격 싱글톤 서버를 비동기 시스템으로 전환하려면 어떻게 해야 합니까?

아마도 몇 가지 중요한 정보를 놓쳤을 것입니다. 질문에 답하기 위해 알아야 할 다른 정보가 있으면 알려 주시기 바랍니다.

도움이 되었습니까?

해결책

ThreadPool 사용의 기본 아이디어는 이를 통해 동기 스레드의 양을 제어할 수 있으며, 스레드가 너무 많으면 스레드 풀이 자동으로 새 스레드의 대기를 관리한다는 것입니다.

AFAIK(Asp.Net 작업 스레드)는 스레드 풀에서 제공되지 않으며 원격 서비스 호출의 영향을 받아서는 안 됩니다(매우 느린 프로세서이고 원격 기능이 CPU를 많이 사용하지 않는 한). 이 경우 컴퓨터의 모든 내용이 영향을 받습니다.)

언제든지 다른 물리적 서버에서 원격 서비스를 호스팅할 수 있습니다.이 경우 asp.net 작업자 스레드는 원격 호출과 완전히 독립적입니다(원격 호출이 별도의 스레드에서 호출되는 경우).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top