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)

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