WCF를 사용하여 클라이언트 - 서버 연결을 돕기 위해 미니 프레임 워크를 작성 중이며 예기치 않은 동작이 발생했습니다.WCF : 스트리밍과 바인딩을 사용하는 채널이 서버가 존재하지 않을 때 오류가 발생하지 않습니다.
클라이언트가 사용할 수없는 서비스에 대한 채널을 연 다음 해당 서비스에 대해 메소드 호출을하면 채널에 대한 바인딩에서 transferMode를로 설정했는지 여부에 따라 결과 동작이 달라집니다 "스트리밍".
바인딩이 스트리밍으로 설정되어 있지 않고 서비스를 사용할 수없는 경우 WCF는 즉시 ICommunicationObject.Faulted 이벤트를 발생시킵니다. 반면에 WCF가 있으면 ICommunicationObject.Opened 이벤트가 발생합니다.
아무도이 행동의 차이에 대한 이유를 설명 할 수 있습니까? 꽤 이상하게 보입니다.
데이터 그램은 비 연결형 프로토콜 인 UDP가 사용되고 있음을 의미합니다 (TCP 아님). 즉, 연결 상태를 알릴 방법이 없습니다. (http://msdn.microsoft.com/en-us/library/ms751494.aspx의 MEP 섹션을 참조하십시오.) 그렇다면 여러분이 말한 것은 말이죠. 나는 그들이 핸드 셰이크 오버 헤드를 피하기 위해 스트리밍을 위해 UDP를 사용하고 있다고 생각합니다. TCP 외에도 필요합니다.하지만 세션을 요청하는 바인딩을 사용하여이 작업을 수행하는 것은 좋지 않습니다. (나는이 재료에 익숙하지 않지만이게 옳다고 생각한다.) – paul
나는 이것이 옳다고 확신하지 않는다. 게시 한 기사조차도 WCF를 확장하기위한 옵션으로 UDP에 대해 설명하고 WCF에 내장 된 것과는 다릅니다. 또한 명시 적 TCP 바인딩 구성이 암시 적으로 UDP를 전송 채널로 사용한다고 생각하는 데 약간의 어려움이 있습니다. 물론, 당신은 결코 알지 못합니다 :) – joniba