Microsoft MVP성태의 닷넷 이야기
[답변]: [추가]: [답변]: 아래 887번에 대한 추가 질문 [링크 복사], [링크+제목 복사],
조회: 10455
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기


=== 클라이언트 ===
wcfobj.CallMethod();

=== 서버 ===
void CallMethod()
{
   ... 몇몇 작업 ...

   // 콜백
   foraech (...)
   {
      callback.호출();
   }
}

위와 같이 호출이 되는 상황으로 알고 있는데요. 콜백이 모두 끝날 때까지 처음 호출한 wcfobj.CallMethod는 실행 제어가 반환되지 않습니다.
또한 콜백 역시, "비동기"는 아닙니다. 클라이언트 측으로의 "호출"이 네트워크를 타고 "동기"로 이뤄지고 클라이언트 측의 메서드가 완료된 이후에야 그다음 콜백을 실행하게 됩니다.

지금 테스트까지 해본 것은 아니지만, Oneway 메서드라고 해도 결과값에 대한 "반환"을 기다리지 않는 것뿐, "호출"에 관한 SOAP 통신은 전달을 해야하기 때문에 클라이언트가 비정상 종료된 상태라면 역시 sendTimeout 동안 대기하게 됩니다.

(그러하니, ChartDatabaseChanged에서 당연히 블로킹 됩니다.)

만약, 굳이 서버 측의 메서드에서 ChartDatabaseChanged에 대해 완료됨을 기대하지 않아도 좋은 상황이라면 foreach 부분을 별도로 다른 스레드에 위임하는 것도 한 방법입니다. (예를 들어, ThreadPool.QueueUserWorkItem 메서드 이용)

inactivitytimeout 값은 개별적으로 적용됩니다. 서버에 설정되었다면 서버가 클라이언트를 체크하는 데 사용하고, 클라이언트 측에 설정되었다면 서버를 체크하는 데에 사용합니다. 서버는 inactivitytimeout == 3초, 클라이언트는 inactivitytimeout == 5초라면, 서버는 주기적으로 클라이언트로 3초마다 heart-beat을 체크하고 클라이언트도 역시 주기적으로 5초마다 서버로 heart-beat을 확인하게 됩니다.








[최초 등록일: ]
[최종 수정일: 7/5/2021]


비밀번호

댓글 작성자
 




1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5806스레드1/25/20233479총정리 - 다양한 스레드들 [초안] [1]파일 다운로드1
5805어웨이트1/25/20233307Taskcontinuewith vs Async/Await [2]파일 다운로드1
5804나이많은...1/25/20233191MS의 Dependency Injection(DI)에 AddSingleton으로 등록된 객체의 Event 등록후 사용시 앱 종료시 별도로 Event를 해지해야 하나요? [2]
5803dssc...1/24/20233343드라이브 문자를 통해서 물리 디스크 명칭을 알아내고 싶습니다. [1]
5802모바일앱1/22/20233290XAMARINE vs Android Studio [7]
5801블루투스1/19/20233957WPF 은행지폐계수기 개조 후 결과값 서버 전송 [2]파일 다운로드1
5800김민아1/19/20234219안녕하세요 가비지 컬렉터 동작 원리 중 궁금한점이 있습니다 [5]
5799guest1/19/20233528C# 공유폴더 내 Acess 디비 공유 [2]
5798kss1/19/20233264책 오탈인가요? [1]
5797이거비버1/19/20233343C# 공부 이후 MS 프레임워크.. 어느것을 공부해야할까요? 너무 많아서 정신이 없네요 [5]
5796guest1/19/20233042해킹 test [3]
5795동기1/18/20232890동기 스레드와 메서드와 While [2]
5794박규동1/18/20232903.net publish 할때마다 runtimeconfig 값이 바뀌는 현상 [1]
5793후후훗1/18/20233092.NET Core 에서 사용중인 함수 후킹 방법 [2]
5792Will...1/18/20232969소스코드 Log Write 기능을 리스트업 질문 [9]
5791PLC1/16/20233694C# - 실시간 5개 룸 모니터링 [15]
5790집으로 ...1/13/20233357[UI 멈춤 현상]deadlock 관련 글을 보고 혹시나 하고 문의 드립니다. [4]
5789guest1/10/20233223스레드와 Async Task [2]파일 다운로드1
5788kr11/10/20233714C# 에서 제공하는 컬렉션들의 차이점이 궁금합니다. [3]
5787stack1/10/20233495STACKOVERFLOW [1]
5786Dev ...1/9/20234438익명 클래스 말고 익명 구조체는 불가능한걸까요? [4]
5785음성인식1/8/20233972음성인식 System.Speech - 문법에 사용된 언어가 음성 인식기의 언어와 일치하지 않습니다. [2]
5784MS워드1/8/20233602MS워드에서 ctrl Z는 클립보드를 이용하나요? 아니면 참조자 이용하나요? [7]
5783구직자1/7/20233637C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/20233631윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/20234143List.Add("newobj") 속도는 빠른 편인지요? [11]
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...