Cache do WCF ChannelFactory

Acabei de ler issoótimo artigo no cache do ChannelFactory do WCF por Wenlong Dong.

Minha pergunta é simplesmente como você pode realmente provar que o ChannelFactory está de fato sendo armazenado em cache entre as chamadas? Eu segui as regras relacionadas aos construtores da ClientBase. Estamos usando o seguinte construtor sobrecarregado em nosso objeto que herda de ClientBase:

ClientBase (string endpointConfigurationName, EndpointAddress remoteAddress);

No artigo mencionado acima, afirma-se que:

Para esses construtores, todos os argumentos (incluindo os padrão) estão na seguinte lista:

· InstanceContext callbackInstance

· String endpointConfigurationName

· EndpointAddress remoteAddress

Desde que esses três argumentos sejam os mesmos quando o ClientBase for construído, podemos assumir com segurança que o mesmo ChannelFactory pode ser usado. Felizmente, os tipos String e EndpointAddress são imutáveis, ou seja, podemos fazer uma comparação simples para determinar se dois argumentos são iguais. Para InstanceContext, podemos usar a comparação de referência de objeto. O tipo EndpointTrait é, portanto, usado como a chave do cache MRU.

Para testar a teoria do cache ChannelFactory, estamos verificando o Hashcode no construtor ClientBase, por exemplo. var testHash = RuntimeHelpers.GetHashCode (base.ChannelFactory);

O valor do hash é diferente entre as chamadas, o que nos faz pensar que o ChannelFactory não é realmente armazenado em cache.

Alguma ideia?

Saudações

Myles

questionAnswers(2)

yourAnswerToTheQuestion