WCF Callback-Schnittstelle - Wer schließt den Kanal

Habe ich Probleme/Fragen schließen eine callback - /duplex-Kommunikationskanal.
Hier sind meine prototypischen WCF Schnittstellen:

[ServiceContract(CallbackContract = typeof(IMyInterfaceCallback))]
public interface IMyInterface
{
    [OperationContract]
    void StartWork();
}

public interface IMyInterfaceCallback
{
    [OperationContract(IsOneWay = true)]
    void WorkFeedback();
}

Auf der client-Seite erstelle ich meine WCF-Schnittstelle über:

DuplexChannelFactory<IMyInterface> dcf = new DuplexChannelFactory<IMyInterface>(implOfIMyInterfaceCallback, customBinding, ea);
IMyInterface myInterface = dcf.CreateChannel();

Auf der server-Seite, die ich dann verwenden

OperationContext.Current.GetCallbackChannel<IMyInterfaceCallback>();

abrufen der callback-Zeiger, die dann verwendet werden können, um die Kommunikation mit dem client.

Meine Fragen sind jetzt:

  1. Der sollte in der Nähe der Kommunikationskanal? Der client oder der server
  2. Die Kommunikation von Objekten geschlossen werden müssen? Die ursprüngliche Schnittstelle (IMyInterface) oder das callback-interface (IMyInterfaceCallback) oder beides.

Ich versuchte, schließen Sie die callback-Schnittstelle auf der server-Seite, zu der Zeit, wenn der server weiß, es wird nicht mehr Rückrufe.
Mit der ICommunicationObject::Schließen auf die callback-Schnittstelle jedoch resultierte in einer minute Blockierung der Bedienung.

Schließen auf der client-Seite ist meiner Meinung nach nicht der richtige Weg, da der client nicht wissen, ob es mehr Rückrufe zu erwarten.

Vielen Dank für jede Hilfe.
Frank

P. S.:
Dies scheint eine sehr grundlegende Frage, aber bisher fand ich keine hilfreichen Informationen bei der Suche über google oder im stackoverflow...

InformationsquelleAutor FrankE | 2011-12-13
Schreibe einen Kommentar