이중 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을 반환합니다.
이 중 하나에 대한 참조는 어떻게 얻을 수 있습니까?
잘 사용하는 channel.BeginSend는 http://kennyw.com/work/indigo/286에 언급 된 실행 가능한 옵션이며 원하는 경우 원시 메시지를 보낼 수 있도록 해당 인터페이스에 대한 액세스를 원했습니다. CreateBufferedCopy를 사용하여 메시지를 한 번 직렬화하고이를 여러 클라이언트에 브로드 캐스팅하는 것과 같은 일을 할 수 있습니다. –
또한 내 이중 계약 및 콜백 계약은 모두 단방향으로 표시됩니다. 이러한 유형의 메시지에 비동기 패턴을 적용 할 수 있습니까? –
그래, 나는 그 인터페이스에 대한 참조를 얻는 방법을 찾고 싶지만 비동기 작업을 대신했다. –