Entity Framework é uma estrutura de mapeamento objeto-relacional popular para .NET da Microsoft. Ele permite trabalhar com dados relacionais por meio de objetos de domínio. E elimina a necessidade da maior parte do código de persistência do banco de dados que, de outra forma, você precisaria escrever.
A popularidade do Entity Framework resultou em seu uso frequente em aplicativos de alta transação, onde o desempenho e a escalabilidade são críticos. Mas, na maioria dos casos de transações elevadas, o banco de dados rapidamente se torna um gargalo. Isso ocorre porque, diferentemente da camada de aplicativos, onde você pode adicionar mais servidores de aplicativos conforme necessário para escalar, você não pode fazer o mesmo com a camada de banco de dados.
A única maneira de alcançar essa escalabilidade é com um cache distribuído como NCache. NCache é um cache distribuído extremamente rápido e escalonável para aplicativos .NET. Ele permite armazenar dados de aplicativos em cache, reduzir as dispendiosas viagens ao banco de dados e melhorar o desempenho e a escalabilidade de seus aplicativos.
Embora o Entity Framework não forneça um modelo de provedor de cache de segundo nível (2º nível), NCache implementou um provedor ADO.NET personalizado para Entity Framework com o qual NCache pode plug-in e cache de resultados de consultas do Entity Framework. Isso permite que você comece a usar o cache distribuído em seu aplicativo Entity Framework sem fazer nenhuma alteração no código.
Exibir documentaçãoSe o seu aplicativo Entity Framework estiver sendo executado em um ambiente multi-servidor, você precisará de um cache distribuído como um cache de segundo nível do Entity Framework. E, NCache é um cache de segundo nível do Entity Framework ideal para configurações de vários servidores e você deve usá-lo pelos seguintes motivos:
A melhor coisa sobre o uso NCache com o Entity Framework é que não há necessidade de programação de sua parte. Você simplesmente modifica os arquivos de configuração do seu aplicativo e especifica NCache como seu provedor de cache de segundo nível. Aqui está um exemplo de alterações no app.config:
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor,
Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>
Como NCache O provedor de cache de segundo nível do Entity Framework se conecta como um provedor ADO.NET personalizado, permite executá-lo no modo de análise, onde registra todas as diferentes consultas que seu aplicativo está emitindo ao Entity Framework. Essas consultas são registradas em um arquivo junto com uma contagem de quantas vezes essa consulta foi chamada durante esse modo de análise. Abaixo segue um exemplo:
<analysis-report>
<!--Call-count = 21-->
<query query-text="" ["SELECT FROM Products"] |
[stored-procedure-name = ""]
caching = "true"
expiration-type="absolute" |
sliding = ""
expiration-time="180"
dbsyncdependency = "true"/>
</analysis-report>
Isso permite determinar quais consultas você deseja armazenar em cache e por quanto tempo. Você também pode especificar a sincronização de banco de dados para algumas ou todas as suas consultas.
Ao ligar NCache Provedor de cache de segundo nível do Entity Framework por meio de alterações no app.config, você obterá um cache distribuído de nível empresarial para seu aplicativo. Aqui estão alguns recursos NCache fornece aplicativos do Entity Framework.
Embora, usando NCache como o cache de segundo nível do Entity Framework é muito rápido e fácil, ele fornece apenas um conjunto limitado de NCache características. A razão para isso é que NCache está vinculado ao fato de estar conectado como um provedor ADO.NET personalizado e deve lidar com o nível de consulta SQL. Existem numerosos NCache recursos que você não pode usar se decidir usar NCache como provedor de cache de segundo nível do Entity Framework.
A alternativa para você é usar NCache diretamente de seu aplicativo Entity Framework, fazendo NCache Chamadas de API como todos os outros aplicativos .NET que não são do Entity Framework fazem. Embora haja um pequeno esforço de programação para seguir esse caminho, você pode decidir que os benefícios superam o esforço extra de programação.
Abaixo está uma lista de recursos que você perderia se o usasse como cache de segundo nível do Entity Framework versus se você usasse NCache diretamente do seu aplicativo.