Microsoft MVP성태의 닷넷 이야기
[답변]: 비동기 DB 쿼리관련 질문 [링크 복사], [링크+제목 복사],
조회: 11988
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기

제가 기억하기로는 위에서 적은 DAC 코드가 실행되는 곳이 WCF 서버 측이죠?
그리고, 위의 DAC 코드가 실행되는 WCF메서드를 호출하는 곳이 별도로 클라이언트이고.

그런데, 클라이언트에서 그 WCF 메서드를 실행하면 InactivityTimeout 때문에 WCF 채널이 faulted 상태로 빠지는 것이죠?

위의 코드라면, 그렇게 되는 것이 맞습니다.
왜냐하면 위의 DAC 코드에서 사용한 BeginExecuteReader는 비동기 함수이긴 하지만, 그 이후에 while 문을 통해서 쓰레드를 여전히 점유하고 있기 때문에, WCF 메서드를 부른 클라이언트 측 역시 계속 블로킹 상태에 놓이게 됩니다.

while 문으로 받아서는 안되고 콜백함수를 통해서 처리를 하셔야 하는데요. 물론 그렇게 하면 클라이언트 측은 WCF 메서드를 부르고는 결과를 받지도 못하고 쓰레드가 진행되기 때문에 또한 문제가 발생합니다.

제 생각에는, 이런 경우 문제를 해결하기 위해서는 어쨌든 클라이언트 쓰레드를 최대한 자유롭게 해주어야 합니다.
이런식으로 우회해야 할 것 같습니다.

=== client ====
int cookie = wcf_channel.DoMethod(); // WCF 메서드를 호출

=== server ====
int DoMethod()
{
int random_cookie = ....; // 메서드 호출 구분을 위한 고유값을 구해놓고. (또는 Guid 로 한다든가.)
cmd.BeginExecuteReader(...); // 비동기 호출을 하고.
return cookie; // 곧바로 cookie 값만을 반환해서 클라이언트 측 쓰레드를 자유롭게 놓아주고.
}

void BeginExecuteReader_Callback_Result() // BeginExecuteReader 에 대한 비동기 콜백함수가 실행되고.
{
... // DB 쿼리 조회값을 구하고.
channel_Callback(cookie, logs); // 클라이언트 측에 WCF 콜백 메서드를 호출
}

==== client ====

void channel_Callback(int cookie, List logs)
{
// 이때, 최초 wcf_channel.DoMethod(); 호출 결과에 대한 값을 처리.
}



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/10/2010]


비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
4801spow...2/3/201710346C#의 참조 동작관련하여 아이디어 문의 드립니다 [4]
4800오세운2/1/201714415C# 에서 C++ DLL임포트 질문입니다. [2]
4798guest1/29/201711735picturebox의 image.dispose [1]
4797김철환1/13/201711684책에 관한 질문입니다 [3]
4796Bere...1/13/201711794++ 후위연산자와 = 을 함께 사용할 때 생성되는 IL 코드 관련... [2]
4795김철환1/11/201712905이벤트 부분을 읽고 있는데 이해가 안되서 질문합니다.. [11]
4794김철환1/10/201710219안녕하세요 c# 6.0 책을 구매한 사람인데요 [3]
4793장준영1/7/201712265안녕하세요 c언어 처음 공부해보는 학생입니다 [4]파일 다운로드1
4792김재영1/4/201713247소스코드 공개 전 성태님의 의견을 듣고싶습니다 [3]
4791C#초보12/28/201613092비동기 소켓 close시 ObjectDisposedException 문제점 질문 있습니다.. [1]
4790미나리12/24/201613337파워포인트 쇼 제어 SimpleHttpServer.cs 작동문제 [4]파일 다운로드1
4789김솔지12/21/201612156프린트 시, 프린트하는 파일의 파일명 구하는 부분에 대해서 질문드립니다. [1]
4788짜두12/19/201611878Visual Studio 2015 에서 msbuild 12 사용 [5]
4787guest12/18/201613687VLC라이브러리에 대해 아시나요? [3]파일 다운로드1
4785Hyou...12/16/201613784WPF 개발 시 MVVM 프레임워크 사용 [2]
4784ds12/15/201610435문의 드립니다. [2]
4783후배12/13/201612035MemoryStream에 관한 질문 입니다. [5]
4782김형민12/6/201610344[ C# 6.0 ] 126p 오타인가요? [6]
4781질문자11/29/201610515ms워드 저장 오류 [1]
4780최진11/28/201614978안녕 하세요 빌드 관련해서 질문드립니다 꾸벅 [4]
4779손니11/28/201611332안녕하세요 질문하다 드려도 될까요 [3]
4778김상호11/25/201610839재귀호출->비재귀호출 [2]파일 다운로드1
4777권오영11/12/201613118아래 질문 상세 소스전체입니다.. [3]
4776권오영11/11/201611018제가 이클립스를 공부중인데..이상한것을 찾았습니다.. [2]
4775이성환11/11/201614421안녕하세요. SnapsToDevicePixels 질문입니다. [5]파일 다운로드1
4774popo11/10/201611046.net SSL통신 관련 질문 드립니다. [1]
... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...