WCF ChannelFactory кеширование

мы только что прочитали этоотличная статья на WCF ChannelFactory кеширование Вэньлун Донг.

Мой вопрос заключается в том, как вы можете доказать, что ChannelFactory фактически кэшируется между вызовами? Я'мы следовали правилам относительно ClientBase ’конструкторы. Мы используем следующий перегруженный конструктор для нашего объекта, который наследуется от ClientBase:

ClientBase (строка endpointConfigurationName, EndpointAddress remoteAddress);

В упомянутой статье говорится, что:

Для этих конструкторов все аргументы (включая аргументы по умолчанию) находятся в следующем списке:

 InstanceContext callbackInstance ·

 строка endpointConfigurationName ·

 EndpointAddress remoteAddress

Пока эти три аргумента одинаковы при создании ClientBase, мы можем смело предполагать, что можно использовать один и тот же ChannelFactory. К счастью, типы String и EndpointAddress являются неизменяемыми, то есть мы можем сделать простое сравнение, чтобы определить, являются ли два аргумента одинаковыми. Для InstanceContext мы можем использовать сравнение объектов. Таким образом, тип EndpointTrait используется в качестве ключа кэша MRU.

Чтобы проверить теорию кэширования ChannelFactory, мы проверяем хэш-код в конструкторе ClientBase, например, var testHash = RuntimeHelpers.GetHashCode (base.ChannelFactory);

Хэш-значение отличается между вызовами, что заставляет нас думать, что ChannelFactory нена самом деле кешируется.

Какие-нибудь мысли?

С уважением

Myles

Ответы на вопрос(2)

Ваш ответ на вопрос