WCF ChannelFactory-Caching

Ich habe das gerade gelesengroßartiger Artikel auf WCF ChannelFactory Caching von Wenlong Dong.

Meine Frage ist einfach, wie Sie tatsächlich nachweisen können, dass die ChannelFactory tatsächlich zwischen Aufrufen zwischengespeichert wird. Ich habe die Regeln bezüglich der ClientBase-Konstruktoren befolgt. Wir verwenden den folgenden überladenen Konstruktor für unser Objekt, das von ClientBase erbt:

ClientBase (Zeichenfolge endpointConfigurationName, EndpointAddress remoteAddress);

In dem oben erwähnten Artikel heißt es:

Für diese Konstruktoren befinden sich alle Argumente (einschließlich der Standardargumente) in der folgenden Liste:

· InstanceContext callbackInstance

· Zeichenfolge endpointConfigurationName

· EndpointAddress remoteAddress

Solange diese drei Argumente bei der Erstellung von ClientBase identisch sind, können wir davon ausgehen, dass dieselbe ChannelFactory verwendet werden kann. Glücklicherweise sind die Typen String und EndpointAddress unveränderlich, d. H. Wir können einen einfachen Vergleich durchführen, um festzustellen, ob zwei Argumente identisch sind. Für InstanceContext können wir den Objektreferenzvergleich verwenden. Der Typ EndpointTrait wird daher als Schlüssel für den MRU-Cache verwendet.

Um die ChannelFactory-Cache-Theorie zu testen, überprüfen wir den Hashcode im ClientBase-Konstruktor, z. var testHash = RuntimeHelpers.GetHashCode (base.ChannelFactory);

Der Hash-Wert unterscheidet sich zwischen den Aufrufen, was uns glauben lässt, dass die ChannelFactory nicht tatsächlich zwischengespeichert ist.

Irgendwelche Gedanken?

Grüße

Myles

Antworten auf die Frage(2)

Ihre Antwort auf die Frage