이 문제를 고려해보십시오. I have a 프로그램 페치할 하는 데이터베이스에서 레코드 (let& # 39 의 말하도다) 100 에서 정보를 웹 서비스, 그리고 각 선택기에 업데이트됩니까 합니다. 이 시나리오에서의 소개하십시오 병렬 처리 방법은 두 가지입니다.
I start 요청할 때마다 웹 서비스에 대한 신규 어떨까. 이 동시에 여러 스래드입니다 일부 외부 매개변수입니다 제어됩니다 (또는 동적으로 조절할 짐작이지만요.).
내가 만든 작은 배치 (let& # 39 의 말하도다 각 10 레코드전자문서의) 출시, 각 일괄작업 별개의 스레드할 (그러하매 응해 acrobatconnectcentral. 10 스래드입니다).
이는 더 나은 외곽진입, 왜 그렇게 생각하세요?
옵션 3 은 베스트중에:
비동기 입출력 (i / o 사용합니다.
처리가 복잡하고 무거운 요청이 없는 한 프로그램에 99% s 기다리는 시간을 보낼 예정이며 이 it& # 39, HTTP 요청.
이것이 정확히 어떤 비동기 입출력 (i / o 자 indows 네트워킹으로의 고안되었습니다 스택할 (또는 .net framework 무엇이든 간에) 에 대한 걱정은 단일 스레드를 사용하여 모든 기다림커서, 그리고 그냥 # 39, & # 39 와 발송하십시오 up& 강조표시할. 이 결과를 얻을 수 있습니다.
Net framework 죄송합니다. 엉덩이를 오른쪽맞춤 고통을 알 수 있을 것입니다. # 39 기초형상 소켓을 사용하는 경우, re 그냥 # 39 의 간소화하는지 it& you& 또는 Win32 api. # 39 의 here& ᄀ군 (테스트됨!) 어쨌든 사용 예를 C # 3:
using System.Net; // need this somewhere
// need to declare an class so we can cast our state object back out
class RequestState {
public WebRequest Request { get; set; }
}
static void Main( string[] args ) {
// stupid cast neccessary to create the request
HttpWebRequest request = WebRequest.Create( "http://www.stackoverflow.com" ) as HttpWebRequest;
request.BeginGetResponse(
/* callback to be invoked when finished */
(asyncResult) => {
// fetch the request object out of the AsyncState
var state = (RequestState)asyncResult.AsyncState;
var webResponse = state.Request.EndGetResponse( asyncResult ) as HttpWebResponse;
// there we go;
Debug.Assert( webResponse.StatusCode == HttpStatusCode.OK );
Console.WriteLine( "Got Response from server:" + webResponse.Server );
},
/* pass the request through to our callback */
new RequestState { Request = request }
);
// blah
Console.WriteLine( "Waiting for response. Press a key to quit" );
Console.ReadKey();
}
편집:
두 가지 사항을 고려해야 합니다.
이 경우, 매우 빠른 처리가 기록하십시오 오버헤드에 기록을 넘겨 오프하도록 스래드입니다 병목 현상이 될 수 있습니다. 이 경우, 할 수 있도록 # 39 그녀의심장을 번들하기 레코드전자문서의 don& 끄기도구 너무나 자주 주면 된다.
이에 대해 합리적으로 기록하십시오 처리가 될 경우, 그 차이는 무시할 간단해진다는 외곽진입 (1 당 기록하십시오 스레드할) 는 아마 최고라니까요
병목 현상이, 컴퓨터 프로그램을 실행하는 것이 아닐 수 있습니다. 즉, HTTP 프로토콜을 는 소켓 연결을 살려둘 헤더입니다 보낼 수 있는 여러 가져오기 요청에만 같은 컨트롤러상의 있는 TCP / IP 에서 절약해줍니다 손 떨림. # 39 에서 사용하는 방법을 모르는 내가 don& 죄송합니다., 닷넷 (.net) 기반 라이브러리. (수 있어야 한다.)
이 요청을 받아 지연 될 수도 있을 것입니다. 할 수 있다는 것을 확실히 하는 너회가 따지지 투명지에 횟수의 미수행 요청을 합니다.
내려받습니다 [평행광 Fx] [1]. 브록링콜레스티온 봐. 일괄 처리 기록, 1 부터 n 이 스레드할 사용하여 채우기할 스래드입니다 레코드는유지합니다 수집품을 볼 수 있는 서비스. 속도를 제어할 수 있는 웹 서비스에 대한 호출하십시오 스래드입니다 컬렉션은 급지됨, 이 수는 있다. 이 작업을 통해 구성할 수 있도록 콘피그체션 의해 수집 및 you& # 39 명, 일반 저회가 공급하는, ll have a nice 리틀이에요 바처 데이터베이스에구성원을 heart& # 39 의 내용을 다시 사용할 수 있습니다.
[1]: http://www.microsoft.com/downloads/details.aspx = e848dc1d-5be3-4941-8705-024bc7f180ba 파밀리이드?