Cache de AppFabric - Uso adequado de DataCacheFactory e DataCache

Estou procurando a maneira mais eficiente de organizar o uso do datacache e do datacache factory para chamadas de armazenamento em cache do AppFabric, pois entre 400 e 700 cache são obtidos por carregamento de página (e quase nenhuma colocação). Parece que usar um único DataCacheFactory estático (ou possivelmente um par em uma instalação round-robin) é o caminho a percorrer.

Chamo GetCache ("cacheName") para cada solicitação de objeto do DataCache ou faço uma estática no momento em que o DataCache Factory é inicializado e o uso para todas as chamadas?

Preciso lidar com exceções, verificar códigos de falha e tentar novas tentativas?

Preciso considerar a disputa quando mais de um encadeamento tenta usar o armazenamento em cache e deseja o mesmo item (por chave)?

Existe algum tipo de documentação que explora adequadamente o design e o uso disso?

Algumas informações que reuni até agora no fórum:

http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915

"Criar a fábrica envolve a conexão com o cluster e pode levar algum tempo. Mas, uma vez que você tenha o objeto de fábrica e o cache com o qual deseja trabalhar, poderá simplesmente reutilizar esses objetos para fazer put e entrar no cache, e você deve veja desempenho muito mais rápido ".

http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49

"A criação de um único DataCacheFactory (singleton) tem mais desempenho do que a criação de vários DataCacheFactory. Você não deve criar o DataCacheFactory para cada chamada, pois ela terá desempenho atingido."

"Por favor, tente encapsular o algoritmo round-robin (com instâncias de fábrica 3/4/5) no seu singleton e compare os resultados do teste de carga."

http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx

"Você pode aumentar o número de clientes para aumentar a taxa de transferência do cache. Mas, às vezes, se você deseja ter um conjunto menor de clientes e aumentar a taxa de transferência, um truque é usar várias instâncias do DataCacheFactory. A instância do DataCacheFactory cria uma conexão com os servidores (e. .g se houver 3 servidores, ele criará 3 conexões) e multiplexará todas as solicitações dos datacaches para essas conexões.Portanto, se o volume put / get for muito alto, essas conexões TCP poderão ter gargalos. várias instâncias do DataCacheFactory e use as operações nelas. "

Aqui o que está em uso até agora ... a propriedade é chamada e, se o valor de retorno não for nulo, uma operação será executada.

private static DataCache Cache
{
    get
    {
        if (_cacheFactory == null)
        {
            lock (Sync)
            {
                if (_cacheFactory == null)
                {
                    try
                    {
                        _cacheFactory = new DataCacheFactory();
                    }
                    catch (DataCacheException ex)
                    {
                        if (_logger != null)
                        {
                            _logger.LogError(ex.Message, ex);
                        }
                    }
                }
            }
        }

        DataCache cache = null;

        if (_cacheFactory != null)
        {
            cache = _cacheFactory.GetCache(_cacheName);
        }

        return cache;
    }
}

Veja esta pergunta no fórum Microsoft AppFabric:http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f

questionAnswers(2)

yourAnswerToTheQuestion