O Entity Framework é um mecanismo de mapeamento objeto-relacional que fornece abstração do banco de dados relacional subjacente e, portanto, simplifica muito o desenvolvimento. Devido a esses benefícios, cada vez mais aplicativos e serviços altamente transacionais e centrados em dados são desenvolvidos com o Entity Framework.
Mas, esses aplicativos de alto tráfego estão enfrentando problemas de escalabilidade. Embora o nível da camada do aplicativo seja escalável, seu banco de dados ou armazenamento de dados não pode acompanhar o número crescente de transações lançadas neles.
É aqui que um cache distribuído vem porque permite armazenar dados em cache e reduzir as viagens caras ao banco de dados que estão causando gargalos de escalabilidade. Mas, o Entity Framework não fornece uma solução pronta para uso que permite usar o cache distribuído em seu aplicativo. No entanto, existem duas maneiras de incorporar o cache distribuído em seu aplicativo Entity Framework. Uma é modificar o código do aplicativo do Entity Framework e fazer chamadas de API diretas para o cache distribuído. Segundo, é usar um cache distribuído que implementou um provedor ADO.NET personalizado que incorpora o cache nos bastidores.
O Entity Framework tem modelo de provedor público para ADO.NET fornecedores onde você pode escrever provedores para 3rd bancos de dados do partido. NCache implementou um provedor ADO.NET do Entity Framework personalizado próprio através do qual é capaz de fazer chamadas de cache distribuídas para NCache API. Esse provedor ADO.NET do Entity Framework personalizado intercepta todas as chamadas de consulta do banco de dados e coloca os conjuntos de resultados dessas consultas em um cache distribuído. Então, NCache O provedor personalizado do Entity Framework intercepta todas as chamadas de consulta subsequentes e simplesmente retorna os resultados de seu cache distribuído, em vez de fazer essa viagem cara ao banco de dados. Se o conjunto de resultados de uma consulta não existir no cache distribuído, a consulta será executada no banco de dados e seu conjunto de resultados será colocado no cache distribuído.
E, NCache O provedor de Entity Framework personalizado também precisa garantir que os dados no cache distribuído sejam sempre consistentes e sincronizados com o banco de dados. E, para isso NCache usos SqlCacheDependency fornecido em .NET. SqlCacheDependeny registra uma consulta SQL com o SQL Server, portanto, se qualquer linha no conjunto de dados representado por essa consulta for alterada no banco de dados, o SQL Server lançará uma notificação de evento .NET para NCache. NCache captura esse evento .NET e remove o conjunto de resultados correspondente do cache distribuído.
A Figura 1 mostra como NCache O Entity Framework Provider se conecta a um aplicativo Entity Framework.
Figura 1 NCache Provedor do Entity Framework sendo usado
Você pode integrar NCache provedor de Entity Framework ADO.NET personalizado em seu aplicativo em apenas quatro etapas simples:
- Substitua o provedor padrão: Substitua o provedor padrão de seus aplicativos por NCache Provedor de estrutura de entidade em app.config/web.config e arquivo .edmx.
- Inscrições NCache fornecedor: Registre seu aplicativo em NCache Configuração do Entity Framework (efcaching.conf). No efcaching.config, você pode especificar facilmente o nível de log e as políticas de expiração etc. para seu aplicativo Entity Framework.
- Execute o aplicativo no modo de análise: Execute seu aplicativo no modo de análise. No modo Análise, NCache Provedor do Entity Framework, registra as consultas do Entity Framework executadas pelo seu aplicativo junto com sua frequência. Com base nos logs, você pode examinar as consultas do Entity Framework que deseja armazenar em cache.
- Execute o aplicativo normalmente: Mude para o modo de cache e execute seu aplicativo.
Assim, usando NCache Provedor de cache do Entity Framework, você pode facilmente obter escalabilidade linear sem alterar o código do aplicativo do Entity Framework.
Então, baixe um teste de 60 dias totalmente funcional do NCache Enterprise e experimente você mesmo.
Sim, funciona com qualquer driver de conector do Entity Framework, como SQL, Oracle, MySQL, PostreSQL etc. NCache O provedor de cache atua entre o provedor de estrutura de entidade ADO.NET e o provedor de dados original para armazenar em cache as respostas das consultas.
Isso só funciona com o SQL Server ou qualquer driver de conector do ENTITY Framework?