Ich habe gehört, dass es wichtig ist, einen WCF-Client-Proxy selbst dann zu dispose (oder zu schließen), wenn
Wenn Sie beispielsweise BasicHttpBinding mit der Standard-Bindungskonfiguration verwenden, sollte dies auch auf einer populären Webseite funktionieren, richtig?
%Vor%oder
%Vor%Danke
Erstellen einer ChannelFactory & amp; Öffnen Sie es ist eine teure Operation und Sie sollten es vermeiden, es für jeden Anruf zu tun, wenn Sie die Leistung interessiert.
Ihr erster Anwendungsfall ist selbst mit basicHttpBinding nicht richtig, da er möglicherweise für jede Instanz eine neue Channelfactory erstellt. .NET 3.5 SP1 hat ein ChannelFactory-Caching eingeführt, damit Sie in bestimmten Szenarien in Ordnung sind.
Wenn Sie in Ihrem zweiten Anwendungsfall die Channelfactory zwischenspeichern und wiederverwenden, ist die Entsorgung nicht wirklich nesehrär, aber denken Sie daran, dass Sie / Ihr Einsatzleiter die Bindungszeit ändern können und ein Mangel an Schließung / Entsorgung enorme Auswirkungen haben kann.
Zusammenfassend ist es immer sicher zu schließen / zu disponentieren, und deshalb schlägt MSDN das vor.
Es ist gut zu üben Dinge zu schließen (und sie zu entsorgen), wenn Sie damit fertig sind. (Würden Sie einen Dateistream geöffnet lassen, obwohl Sie gerade durch / lesen / lesen)? Off-Hand kann ich ein paar Gründe sehen:
Nur ein paar der Gründe, die mir in den Sinn kommen können.
Es hängt wirklich von der Art des Clients ab. Wenn Sie beispielsweise eine ASP.NET-Anwendung schreiben, die den Dienst aufruft, empfiehlt es sich, den Proxy zwischenzuspeichern, da dessen Erstellung teuer ist.
Wenn Sie mit einer IDisposable-Ressource fertig sind, sollten Sie sie entsorgen, damit das Objekt, das entsorgt wird, die freigegebenen Ressourcen freigeben kann, damit es aus dem Speicher entfernt werden kann. Wenn ein IDisposable-Objekt eine Close-Methode hat, sollte es zuerst aufgerufen werden.
Einen ausgezeichneten Artikel zu diesem faszinierenden Thema finden Sie hier: Ссылка
Tags und Links wcf .net c# web-services