2008-08-14 3 views
9

우리는 별도의 Windows 서비스에서 원격 단일 서버를 실행합니다 (RemotingService를 호출 해 봅시다). RemotingService의 클라이언트는 ASP.NET 인스턴스입니다 (많은 인스턴스가 많음).비동기 원격 호출

현재 원격 처리중인 클라이언트는 RemotingService를 호출하고 RemotingService 호출이 처리되는 동안 차단합니다. 그러나 원격 서비스는 asp.net 작업자 스레드가 상당히 오랜 시간 (4-5 초) 동안 차단된다는 점에서 (RPC 호출과 복잡한 알고리즘이 많아 질수록) 복잡해지고 있습니다.

this msdn article에 따르면이 작업은 각 원격 RPC에 대해 asp.net 작업자 스레드가 차단되어 있기 때문에 제대로 확장되지 않습니다. 비동기 처리기로 전환하여 asp.net 작업자 스레드를 비울 것을 권장합니다.

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

원격 호출이 여전히 스레드 풀에서 스레드를 사용한다는 점을 제외하고는 문제가없는 것처럼 보입니다. asp.net 작업자 스레드와 동일한 스레드 풀입니까?

리모컨 싱글 톤 서버를 비동기 시스템으로 전환하여 asp.net 작업자 스레드를 확보하는 방법은 어떻게해야합니까?

중요한 정보가 누락되었을 수 있습니다. 질문에 답하기 위해 알아야 할 사항이 있으면 알려 주시기 바랍니다.

답변

0

ThreadPool을 사용하는 배후의 아이디어는 동기식 스레드의 양을 제어 할 수 있다는 것입니다. 스레드 수가 너무 많으면 스레드 풀이 자동으로 새로운 스레드의 대기를 관리합니다.

스레드 풀에서 AFAIK (Asp.Net worked thread)가 제공되지 않고 매우 느린 프로세서가 아니고 원격 기능이 매우 CPU가 아닌 경우 Remoting 서비스에 대한 호출의 영향을받지 않습니다. 집중적 인 경우 - 컴퓨터의 모든 내용이 영향을받습니다).

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

+0

질문에 링크 된 문서에서 설명한 것처럼 asp.net 작업자 스레드는 실제로 런타임 스레드 풀에서 왔습니다. – CVertex