2010-03-12 2 views
0

이중 Wcf 서비스가 있고 비 블로킹 BeginSend 메서드를 사용할 수 있도록 IDuplexChannel, IDuplexSessionChannel 또는 IOutputChannel에 대한 참조를 얻고 싶습니다. 나는 다음과 같은 한 기동 방법의 핸들러의 안에 내 서버에서Wcf에서 IDuplexChannel, IDuplexSessionChannel 또는 IOutputChannel에 대한 참조를 얻는 방법

, (내가 그들 중에 존재하는 보이지 않는다의 IOutputChannel. 장소에 나열된 모든 인터페이스를 시도했습니다.)

_clientCb = OperationContext.Current.GetCallbackChannel<IDxClientCb>(); 
_channel = OperationContext.Current.Channel; 
_duplexChannel = _channel as IOutputChannel; 
Debug.Print("Service IOutputChannel null: {0}", _duplexChannel == null); 

유사 , 클라이언트에서 DuplexChannelFactory.CreateChannel()의 반환 값을 이러한 인터페이스 중 하나로 캐스팅하려고 시도했으며 항상 null을 반환합니다.

이 중 하나에 대한 참조는 어떻게 얻을 수 있습니까?

답변

1

왜 하시겠습니까? 비동기 작업을 수행하려면 비동기 작업으로 콜백 계약을 선언하고 대신 비동기 작업을 사용하십시오. (http://msdn.microsoft.com/en-us/library/ms734701.aspx 참조)

+0

잘 사용하는 channel.BeginSend는 http://kennyw.com/work/indigo/286에 언급 된 실행 가능한 옵션이며 원하는 경우 원시 메시지를 보낼 수 있도록 해당 인터페이스에 대한 액세스를 원했습니다. CreateBufferedCopy를 사용하여 메시지를 한 번 직렬화하고이를 여러 클라이언트에 브로드 캐스팅하는 것과 같은 일을 할 수 있습니다. –

+0

또한 내 이중 계약 및 콜백 계약은 모두 단방향으로 표시됩니다. 이러한 유형의 메시지에 비동기 패턴을 적용 할 수 있습니까? –

+0

그래, 나는 그 인터페이스에 대한 참조를 얻는 방법을 찾고 싶지만 비동기 작업을 대신했다. –

관련 문제