2009-03-06 2 views
2

일반적으로 WCF TCP 채널은 호스트에 연결 한 다음 호스트를 통해 메서드 호출을 수행 할 수있게합니다.WCF "역"tcp 채널을 만들 수 있습니까?

클라이언트에 대한 아웃 바운드 연결을 만드는 서비스를 원하지만 일단 연결되면 클라이언트는 내 서비스에 대해 기존 연결 인 것처럼 메서드 호출을 할 수 있습니다.

나는이 사용자 정의 채널의 일종이라고 생각하지만 a)이 이미 B를 수행 된 경우 I 시도하고

주를 피해야한다 어떤 함정이 있었다 여부) 궁금 - 내가 아니에요 듀플렉스 스타일 콜백에 대해 이야기하는 것이 아니라 클라이언트와 서버가 서버가 표준 wcf 디스패처를 통해 클라이언트 요청에 응답하는 전통적인 스타일의 대화를 진행하는 것입니다. 기본 TCP 연결의 발신자 만 클라이언트가 아닌 서버입니다.

Siz는 이중 계약을 사용하는 것만 큼 간단하다고 제안합니다. 요구 사항을 약간 확장하려면 a) 클라이언트는 서버에 연결할 수 없습니다. 따라서 듀플렉스 채널이 별도의 tcp 연결을 만드는 경우에는 작동하지 않습니다. 나는 내 테스트에서 클라이언트가 tcp (클라이언트가 확인할 수 있는가?) 아래의 연결을 공유하고 있다고 생각한다.

b) 클라이언트가 "콜백 계약"메커니즘을 호출해야하는 서버에 여러 서비스가있다. 역방향 연결을 설정하는 것은 어색 할 것입니다. 모든 설정을 위해 많은 "등록"스타일 호출이 필요할 것입니다. 이상적으로는 한 번에 여러 서비스를 설정하고 싶습니다.이 방법을 사용하면 가능합니까?

답변

3

MSDN here을 살펴보십시오. NetTcpBinding은 양방향 통신을 지원합니다.

WCF 용어로 매핑하면 모든 클라이언트가 실제로 서비스를 호스팅하고 호스트는 실제로 여러 호스트에 연결하는 클라이언트가됩니다. 이중 채널을 사용하면 두 가지 방법으로 메시지를 보낼 수 있습니다.

이중 통신은 콜백 기능이 아니라 전체 계약을 의미합니다. 클라이언트가 호스트에 대한 이중 연결을 열면 콜백 계약 처리를 따라 서버에서 들어오는 호출을 수신하여 자체 서버를 실행합니다. 클라이언트 -> 서버 또는 서버 -> 클라이언트로 전송 된 모든 메시지는 모든 표준 WCF 인프라를 통과합니다.

이것은 정확하게 질문에 대답하지 않는다고 말하는 것이 합리적입니다. 그러나 어떤 채널을 만들려면 연결 개시자가 먼저 어떤 종류의 서버에 연결해야합니다. 가장 쉬운 방법은 이중 연결입니다.

+0

양방향 통신은 콜백 기능을 제공 할 수 있음을 의미합니다. 나는 콜백에 대해 이야기하는 것이 아니라 오히려 고객이 의사 소통을하고 모든 정상적인 파견 활동에 참여할 수 있도록하는 것입니다. –

관련 문제