Richtige Weg, um in der Nähe von WCF 4 Kanäle effektiv
Bin ich über die folgenden Möglichkeiten, um in der Nähe der WCF 4 Kanäle. Ist dies der richtige Weg, es zu tun?
using (IService channel
= CustomChannelFactory<IService>.CreateConfigurationChannel())
{
channel.Open();
//do stuff
}//channels disposes off??
InformationsquelleAutor chugh97 | 2012-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl nicht streng gerichtet auf den Kanal, die Sie tun können:
Das stimmt - danke für den Hinweis. Angepasst haben, post zu reflektieren
Dank aktualisiert haben
InformationsquelleAutor tom redfern
Dass verwendet werden die allgemein anerkannte Methode für die Version WCF-client-Proxys in die "frühen" Tage der WCF.
Aber die Dinge haben sich seitdem geändert. Es stellte sich heraus, dass die Umsetzung der IClientChannel<T>.Dispose() einfach ruft die IClientChannel<T>.Close() Methode, die möglicherweise eine Ausnahme unter bestimmten Umständen, etwa wenn der zugrundeliegende Kanal, der nicht geöffnet ist oder nicht geschlossen werden in einer zeitgemäßen Weise.
Daher ist es keine gute Idee, aufrufen
Close()
innerhalb einercatch
block da, dass sich hinter einigen unveröffentlichten Ressourcen im Fall einer Ausnahme.Den neue wird empfohlen invoke IClientChannel<T>.Abort() innerhalb der
catch
block statt, beiClose()
scheitern würden. Hier ist ein Beispiel:Update:
Hier ist ein Verweis auf einen MSDN-Artikel, die beschreibt diese Empfehlung.
Die kurze Antwort ist ja, sollte release ein WCF-Kanal explizit, wenn es nicht mehr benötigt wird. Eine offene WCF-Kanal hält einige unteren Ebene Findmittel, wie ein TCP-socket oder HTTP-Verbindung. Wenn Sie Verzögerung der Freisetzung dieser Ressourcen, indem Sie das
Sie haben jede Bezugnahme auf Dokumente beschreiben diese änderung der Empfehlung?
Sicher, hier ist es: msdn.microsoft.com/en-us/library/aa355056.aspx
InformationsquelleAutor Enrico Campidoglio