2012-01-10 2 views
3

제목이 붙은 것처럼 가능합니까?WCF로 브로드 캐스트하는 것이 가능합니까?

제 개념은 양방향 채널로 WCF를 사용하고 있으며 각 클라이언트 응용 프로그램은 Login()을 WCF로 가져오고 WCF는 콜백 채널 참조를 목록에 저장합니다 (GetCallbackChannel).

브로드 캐스트 할 때 단순히 콜백 채널 목록을 반복합니다.

하지만 ... 콜백 채널 참조를 저장하고 다른 서비스 컨텍스트에서 공유 한 다음 방송 할 수 있습니까?

소켓으로 할 수 있다는 것을 알고 있습니다. (저는 어떻게 생각할 수 있습니까?)하지만 WCF로 할 수 있다면 정말 알고 싶습니다.

답변

3

예. OperationContext.Current.GetChannelCallbacks()로 얻은 콜백을 사용하려면 기본적으로 게시/구독 상황을 설정할 수 있습니다. InstanceContext = PerSessions 문제에 대해서는 각 세션마다 다른 서비스 인스턴스가 있으므로 인스턴스 외부에 콜백 목록이 있어야한다는 것을 알아야합니다. 정적 또는 싱글 톤으로 만들 수 있습니다. 또한 고려해야 할 스레드 안전 문제가 있습니다.

이 커버하는 좋은 기사입니다 발행 - 구독 : http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S6

1

확실히 콜백 채널 목록을 반복하여 브로드 캐스트를 구현할 수 있습니다. 의 의미가 확실하지 않습니다. "다른 서비스 컨텍스트에있는 콜백 참조 및 공유를 저장 한 다음"을 브로드 캐스트합니다.

+0

WCF에 대한 클라이언트 호출을 확인에서, WCF가 작동 컨텍스트에서 클라이언트로 콜백 할 수있는 채널을 얻을 수있을 때 (나는 위치 같은 것을 생각하고 어디 다시 보낼 메시지). 그래서 나는 어딘가에 그 참조를 저장하고 다른 스레드에서 다시 호출하는 데 사용한다고 생각했습니다. –

+0

Woops 죄송합니다. 단어 쌍을 잃어 버렸습니다. InstanctContext = PerSession을 설정하면 WCF에 대한 각 클라이언트 호출에 고유 한 InstantContext가 있으므로 모든 클라이언트와 해당 목록을 공유 할 수 있습니까? –

관련 문제