Armazenamento em cache em aplicativos do .NET Framework
O cache permite armazenar dados na memória para acesso rápido. Quando os dados são acessados novamente, os aplicativos podem obter os dados do cache em vez de recuperá-los da fonte original. Isso pode melhorar o desempenho e a escalabilidade. Além disso, o cache disponibiliza dados quando a fonte de dados está temporariamente indisponível.
O .NET Framework fornece funcionalidade de cache que você pode usar para melhorar o desempenho e a escalabilidade de aplicativos cliente e servidor Windows, incluindo ASP.NET.
Nota
No .NET Framework 3.5 e versões anteriores, ASP.NET fornecido uma implementação de cache na memória no System.Web.Caching namespace. Em versões anteriores do .NET Framework, o System.Web cache estava disponível apenas no namespace e, portanto, exigia uma dependência de classes ASP.NET. No .NET Framework 4, o System.Runtime.Caching namespace contém APIs projetadas para aplicativos Web e não Web.
Armazenamento em cache de dados
Você pode armazenar informações em cache usando classes no System.Runtime.Caching namespace. As classes de cache neste namespace fornecem os seguintes recursos:
Tipos abstratos que fornecem a base para a criação de implementações de cache personalizadas.
Uma implementação concreta de cache de objetos na memória.
A classe de cache de base abstrata (ObjectCache) define as seguintes tarefas de cache:
Criação e gerenciamento de entradas de cache.
Especificação de informações de expiração e remoção.
Acionamento de eventos que são gerados em resposta a alterações nas entradas de cache.
A MemoryCache classe é uma implementação de cache de objetos na memória da ObjectCache classe. Você pode usar a classe para a MemoryCache maioria das tarefas de cache.
Nota
A MemoryCache classe é modelada no objeto de cache ASP.NET definido no System.Web.Caching namespace. Portanto, a lógica de cache interno semelhante à lógica que foi fornecida em versões anteriores do ASP.NET.
Para obter um exemplo de como usar o cache em um aplicativo WPF, consulte Passo a passo: Armazenando dados de aplicativo em cache em um aplicativo WPF.
Cache em aplicativos ASP.NET
As classes de cache no System.Runtime.Caching namespace fornecem funcionalidade para armazenar dados em cache no ASP.NET.
Nota
Se seu aplicativo tem como destino o .NET Framework 3.5 ou anterior, você deve usar as classes de cache que são definidas no System.Web.Caching namespace. Para obter mais informações, consulte Visão geral do cache ASP.NET.
Nota
Quando você desenvolve novos aplicativos, recomendamos que você use a MemoryCache classe. A API fornecida no System.Runtime.Caching namespace é como a API fornecida no Cache namespace. Portanto, a API será familiar se você usou cache em versões anteriores do ASP.NET. Para obter um exemplo de como usar o cache em aplicativos ASP.NET, consulte Passo a passo: Armazenando em cache dados de aplicativos no ASP.NET.
Cache de Saída
Para armazenar manualmente os dados do aplicativo em cache, você pode usar a MemoryCache classe em ASP.NET. ASP.NET também suporta cache de saída, que armazena a saída gerada de páginas, controles e respostas HTTP na memória. Você pode configurar o cache de saída declarativamente em uma página da Web ASP.NET ou usando as configurações no arquivo Web.config. Para obter mais informações, consulte Elemento outputCache para cache (ASP.NET esquema de configurações).
ASP.NET permite estender o cache de saída criando provedores de cache de saída personalizados. Usando provedores personalizados, você pode armazenar conteúdo armazenado em cache usando outros dispositivos de armazenamento, como discos, armazenamento em nuvem e mecanismos de cache distribuído. Para criar um provedor de cache de saída personalizado, crie uma classe que derive da OutputCacheProvider classe e configure o aplicativo para usar o provedor de cache de saída personalizado.
Armazenamento em cache nos serviços WCF REST
Para serviços WCF REST, o .NET Framework permite que você aproveite o cache de saída declarativo que está disponível no ASP.NET. Isso permite que você armazene em cache as respostas de suas operações de serviço WCF REST. Quando um usuário envia uma solicitação HTTP GET para um serviço configurado para cache, ASP.NET envia de volta a resposta em cache e o método de serviço não é chamado. Depois que o cache expirar, na próxima vez que um usuário enviar uma solicitação HTTP GET, seu método de serviço será chamado e a resposta será novamente armazenada em cache.
O .NET Framework também permite que você implemente o cache HTTP GET condicional. Em cenários REST, uma solicitação HTTP GET condicional é frequentemente usada por serviços para implementar cache HTTP inteligente, conforme descrito na Especificação HTTP. Para obter mais informações, consulte Suporte de cache para WCF Web HTTP Services.
Estendendo o cache no .NET Framework
O cache no .NET Framework foi projetado para ser extensível. A ObjectCache classe permite que você crie uma implementação de cache personalizada. Essa classe fornece membros que estão disponíveis para todos os aplicativos gerenciados, incluindo Windows Forms, Windows Presentation Foundation (WPF) e Windows Communications Foundation (WCF). Você pode fazer isso para criar uma classe de cache que usa um mecanismo de armazenamento diferente ou se quiser controle granular sobre as operações de cache.
Para estender o cache, você pode fazer o seguinte:
Crie uma classe personalizada que deriva da ObjectCache classe e, em seguida, forneça uma implementação de cache personalizada na classe derivada.
Crie uma classe que deriva da MemoryCache classe e personalize ou estenda a classe derivada. Para obter um exemplo de como fazer isso, consulte Caching Application Data by Using Multiple Cache Objects in an ASP.NET Application.
Crie uma classe que derive da OutputCacheProvider classe e configure o aplicativo para usar o provedor de cache de saída personalizado.
Para obter mais informações, consulte a entrada Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET Framework 4.0 Series) no blog de Scott Guthrie.