Modelo de programação (Cache do AppFabric 1.1)

A partir de agora, há dois modelos de programação disponíveis para o Microsoft AppFabric 1.1 para Windows Server:

  • Padrão de programação cache-aside. Isso significa que, se os seus dados não estiverem presentes no cache, o seu aplicativo, não o cache distribuído do AppFabric, precisará recarregar os dados no cache a partir da fonte de dados original.

  • Padrão de programação read-through/escrita atrasada. Neste modelo, você cria um provedor personalizado para acessar o repositório de dados de back-end. Se um item não estiver na cache, o provedor o recuperará a partir do back-end. Quando os itens são gravados em uma cache, eles são gravados no back-end de modo periódico e assíncrono. Para obter mais informações sobre este modelo, consulte Read-through/escrita atrasada (Cache do AppFabric 1.1).

Estratégia de cache

O código do aplicativo deve ser projetado, para que possam funcionar independentemente do cache, e não exige que os dados armazenados em cache estejam sempre disponíveis. Como os dados no cache são preservados de maneira durável, há a possibilidade de os dados ficarem indisponíveis.

O recurso de alta disponibilidade ajuda a proteger contra falhas de processo e computador em hosts de cache individuais enquanto o cluster estiver sendo executado. Porém, poderá haver cenários quando todo o cluster ficar inativo. Por exemplo, se um de vários hosts principais ficar inativo, todo o cluster será desligado. Para obter mais informações, consulte Hosts principais e gerenciamento de cluster (Cache do AppFabric 1.1).

Há vários outros motivos para que o seu código possa encontrar um erro de cache: o item de cache pode ter expirado ou ter sido removido, o servidor de cache pode ter sido reinicializado, o serviço de cache pode ter sido reiniciado ou o cluster de cache pode ter sido reiniciado acidentalmente. Independentemente da razão, o código do seu aplicativo precisará estar apto para acessar o banco de dados (ou outra fonte de dados) se o objeto armazenado em cache não estiver disponível.

Clientes de cache

Para armazenar dados no cache, use o método GetCache ou o método GetDefaultCache para retornar um objeto DataCache. Após ser instanciado, esse objeto DataCache será denominado como cliente de cache.

Observação

Por razões de desempenho, recomendamos que você minimize o número de objetos DataCacheFactory criados em um aplicativo habilitado por cache. Armazene o objeto DataCacheFactory em uma variável que esteja disponível a todas as partes do aplicativo que utilizem clientes de cache.

Há várias opções disponíveis para configurar o comportamento do cliente de cache. Você pode especificar essas configurações de maneira programática, com um arquivo de configuração do aplicativo ou utilizando ambas as abordagens. Para obter mais informações sobre clientes de cache e as definições de configuração de aplicativo disponíveis, consulte Clientes de cache e cache local (Cache do AppFabric v1.1) e Configurações de aplicativo (Cache do AppFabric 1.1).

É possível que mais de um cliente de cache acesse um único cache ao mesmo tempo. Os aplicativos que são executados em computadores diferentes podem fazer isso, instalando um cliente de cache que esteja configurado para utilizado o mesmo cache. O exemplo a seguir de código demonstra esse conceito. Observe que os comentários são usados para identificar o código que está sendo executado em instâncias diferentes de cliente de cache.

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

Consulte também

Conceitos

Diagrama de arquitetura física de cache do AppFabric (Cache do AppFabric 1.1)
Diagrama de arquitetura lógica de cache do AppFabric (Cache do AppFabric 1.1)
Desenvolvendo um cliente de cache

  2012-03-05