2014-12-07 3 views
0

몇 대의 컴퓨터가 WCF 클라이언트로 작동하며 WCF 서비스로 작동하는 컴퓨터에 연결되어 있습니다. 하나의 클라이언트 연결이 끊어졌습니다 (즉, 케이블 연결이 끊어졌습니다). 서비스 측면에서 어떻게되었는지 알 수 있습니까? wcf 콜백 이벤트를 사용하여 닫으려고했으나 닫았지만 전화를받지 못했습니다. C#으로 쓰고 있습니다.wcf 클라이언트 연결이 끊어 졌음을 알리기

좋습니다. Adi.

+0

_service_에 대해 자세히 알려주십시오. ** 고객에게 ** 데이터를 밀어 넣고 있습니까? 어떤 시점에서 클라이언트를 호출합니까 (따라서 클라이언트 자체 서비스를 만드는 것입니까?)? 서비스가 비동기식입니까? 왜 당신의 서비스가 클라이언트가 갑자기 끊어 졌다는 것을 알아야하는지 잘 모르겠습니다. – MickyD

+0

@micky duncan 여기 피터의 대답에 대한 답장으로 쓴 예가 있습니다. "클라이언트와 서비스간에 채팅이 있다고 가정 해 봅시다. 서비스에는 연결된 모든 클라이언트가 채팅 할 수있는 GUI가 있습니다. 클라이언트는 서비스를 연결하여 메시지를 받고 그것을 보여줄 수 있습니다. 클라이언트의 케이블 연결이 끊어지면 GUI에서 알 수 없지만 클라이언트가 여전히 연결되어있는 것을 볼 수 있습니다 " – Adi

+0

OK. 시스템이 인터넷 또는 LAN을 통해 작동해야합니까? _ [WCF P2P API] (http://msdn.microsoft.com/ko-kr/library/cc297274.aspx) _에 뭔가가 있는지 궁금합니다. – MickyD

답변

0

클라이언트가 "사용자와의 긴밀한 연결"을 서비스 할 수 없기 때문에 콜백이 작동하지 않습니다.

정상 작동을 나타 내기 위해 클라이언트가 생성 한 하트 비트 - 주기적 신호가 필요합니다. 서비스가 클라이언트의 시간에서이 신호를 수신하지 못하면이 클라이언트가 연결을 끊었다 고 추측 할 수 있습니다.

또한 서비스 측면에서 클라이언트를 구별하는 방법이 필요합니다. 모든 클라이언트는 하트 비트 신호에서 고유 한 ID를 전달할 수 있습니다.

+0

빠른 답장을 보내 주셔서 감사합니다. Heartbeat이 나에게 내가 필요한 것에 대한 답을 명확히 줄 것입니다. 더 효율적인 것을 찾고 있기 때문에 이것은 나의 마지막 결과가 될 것입니다. – Adi

0

서비스가 네트워크 케이블의 연결 상태에 영향을주지 않아야합니다. TCP의 한 가지 특징은 누군가가 적극적으로 데이터를 보내지 않으면 네트워크 연결에서 일시적인 중단을 허용 할 수 있다는 것입니다.

이것은 WCF에서 더욱 사실입니다. WCF에서는 네트워크를 신뢰할 수없는 상황에서 사용자를 보호 할 수있는 추가 프레임 워크가 있습니다.

클라이언트의 연결 끊김을 감지하여 수행하는 주요 작업은 안정성과 가용성이 떨어집니다.

+0

내가 클라이언트와 서비스 사이에 채팅이 있다고 가정하면, 서비스에는 연결된 모든 클라이언트가 채팅 할 수있는 GUI가 있습니다. 클라이언트가 서비스를 연결하면 메시지가 표시되고이를 표시 할 수 있습니다. 클라이언트의 케이블 연결이 끊어지면 나는 그것을 알 수 없으며 GUI에서는 여전히 클라이언트가 연결되어있는 것을 볼 수 있습니다. – Adi

관련 문제