2013-08-24 2 views
1

WebAPI/WCF와 함께 호스팅되는 HTTP 계층을 통해 공개하려는 "엔진"이 있습니다.웹 응용 프로그램의 멀티 스레딩 (WCF/WebAPI)

이 엔진은 대용량 데이터에 대해 간단한 읽기 전용 작업을 수행하며 실제로 병렬 처리의 이점을 얻을 수 있습니다. 간단한 (...)에서 Parallel.For (...) 로의 간단한 전환은 놀라운 일입니다.

이제는 웹 서버에서 이러한 종류의 멀티 스레딩을해서는 안되기 때문에 호스트하는 가장 좋은 방법을 찾으려고합니다.

이상적으로 WebAPI 또는 WCF를 사용하여 IIS에서 표준 웹 응용 프로그램으로 호스팅하고 싶습니다. 이것이 좋은 해결책이 아니라면, 좋은 대안이 무엇일까요?

표준 Windows 서비스에서 WebAPI 또는 WCF를 자체 호스팅하는 것이 더 좋습니까? 나는 여기에 문제가 IIS 또는 ASP.NET 특정 있는지 모르겠습니다.

어쩌면 이것은 문제가 아니며 너무 걱정 스럽습니까?

모든 의견을 보내 주시면 감사하겠습니다.

감사

답변

0

나는 당신의 문제가 무엇인지 완전히 명확하지 않다하지만 난 당신이 결정할 수있는 몇 가지 기준으로 제공하려고합니다 :

당신은 IIS/ASP.NET에서 멀티 스레딩을 사용할 수 있습니다 안전하게. 물론 병렬 처리가 더 높은 수준에서 발생하기 때문에 많은 병렬 요청이 필요하지 않습니다. 실제로는 처리량이 약간 떨어지지만 약간만 발생합니다. 병렬 요청은 거의 없지만 낮은 수준의 병렬 처리를 사용하여 대기 시간을 줄일 수 있습니다 (Parallel.For).

ASP.NET의 멀티 스레딩은 처리량을 높이는 것보다 대기 시간을 줄이는 방법입니다.

자기 호스팅이 어떻게 변경되는지 알지 못합니다.

실용적인 접근 방식이라는 약간의 불안감이있는 것 같습니다. 특정 우려 사항을 공식화하여 해결하도록 노력하십시오.

+0

감사의 말은 잘못 정의 된 질문에 사과드립니다. 웹 응용 프로그램에서 스레드를 생성하여 IIS가 요청을 처리하는 데 사용하는 동일한 스레드 풀에서 스레드를 할당한다는 인상을 받았습니다 (지금 참조를 찾는 데 어려움이 있습니다). 따라서 동시 사용자 수를 늘리면 기본적으로 IIS가 새 요청을 처리하지 못하게하는 스레드 풀이 고갈 될 가능성이 큽니다. 이제 2 개의 스레드 풀이 동일하지 않은 경우, 이는 분명히 적용 할 수 없습니다. 더 의미가 있습니까? – Pedro

+0

a) ASP.NET과 작업을위한 스레드 풀은 동일하지만 응용 프로그램이 오버로드되지 않는 한 문제가되지 않습니다. 오버로드 된 경우 스레딩과 상관없이 문제를 해결해야합니다. 평행법은 과부하 (상당히)를 악화시키지 않습니다. b) TaskScheduler API를 사용하여 두 번째 스레드 풀을 사용할 수는 있지만 과부하는 해결되지 않습니다. 도움이되지 않습니다. 내가 다루어야 할 다른 모든 관심사는 무엇입니까? – usr