ASP.NET Core está se tornando popular para o desenvolvimento de aplicativos da web por causa de sua arquitetura mais limpa e leve e suporte multiplataforma. Tal ASP.NET Core os aplicativos têm tráfego intenso e são executados em uma implantação de vários servidores com balanceamento de carga. Na verdade, é comum ver web farms de 10 a 20 servidores e alguns até maiores do que isso.
Ter uma implantação com balanceamento de carga de vários servidores torna sua camada de aplicativo muito escalável porque você pode adicionar mais servidores à medida que sua carga de transação aumenta. Isso permite que seu ASP.NET Core aplicativo para lidar facilmente com cargas pesadas de transações. Ainda existe um gargalo de desempenho e isso torna seu ASP mais lento.NET Core aplicação.
E este ASP.NET Core gargalo de desempenho está em seu banco de dados e armazenamento de dados que não pode lidar com cargas pesadas da maneira que seu ASP.NET Core camada de aplicativo pode. Embora você possa adicionar mais servidores ao web farm da camada de aplicativo, não pode fazer o mesmo com a camada do banco de dados. Abaixo estão os dois tipos de armazenamento de dados que se tornam um gargalo de desempenho para ASP.NET Core aplicações.
- Servidor de banco de dados (SQL Server)
- ASP.NET Core Sessões
NCache Adicionar ao carrinho NCache Docs NCache API do cliente
A Solução: Cache Distribuído
Para remover esses armazenamentos de dados gargalos de desempenho, sua melhor aposta é usar um cache distribuído como NCache. NCache é um cache distribuído na memória de software livre .NET que é muito mais rápido que o banco de dados. Ao contrário do seu banco de dados, NCache is linearmente escalável porque permite construir um cluster de servidores de cache e adicionar mais servidores ao cluster à medida que as cargas de transações aumentam.
NCache permite que você armazene em cache os dados do aplicativo para que você possa reduzir as dispendiosas viagens de banco de dados em quase 80%. Isso reduz a carga no banco de dados, o que permite que ele execute leituras e gravações muito mais rapidamente e não se torne mais um gargalo de desempenho.
NCache também é uma loja distribuída escalável para o seu ASP.NET Core sessões. Adicionalmente, NCache replica ASP.NET Core sessões para vários servidores para evitar a perda de dados caso algum servidor de cache fique inativo. Para ASP.NET Core sessões, isso é muito importante porque você não pode perder nenhuma sessão em tempo de execução. Abaixo está um diagrama mostrando como um cache distribuído como NCache se encaixa na implantação de seu aplicativo.
NCache Adicionar ao carrinho NCache Docs NCache API do cliente
Cache de dados de aplicativos através de ASP.NET Core IDdistribuídoCache
Antes do ASP.NET Core, o ASP.NET mais antigo fornecia um Cache ASP.NET que não atendia às necessidades de ambientes multi-servidor. Agora, ASP.NET Core introduziu o IDdistribuídoCache interface como uma API padrão de cache distribuído bastante básica que permite que você programe contra ela e, em seguida, conecte-se a caches distribuídos de terceiros perfeitamente.
Aqui está um exemplo de como usar IDistributedCache
Interface:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
IDistributedCache _cache; ... private byte[] LoadCustomer(string custId) { string key = "Customers:CustomerID:" + custId; // is the customer in the cache? byte[] customer = _cache.Get(key); if (customer == null) { // the cache doesn't have it. so load from DB customer = LoadFromDB(key); // And, cache it for next time _cache.Set(key, customer); } return customer; } |
NCache também implementou um provedor de IDistributedCache
que você pode conectar ao seu ASP.NET Core formulários. Dessa forma, você não precisa alterar nenhum código específico para NCache.
Eis o que o IDistributedCache
interface parece (observe que cada um desses métodos também tem uma sobrecarga Async).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
namespace Microsoft.Extensions.Caching.Distributed { public interface IDistributedCache { // Each of these methods also has an “Async” overload byte[] Get(string key); void Refresh(string key); void Remove(string key); // Specify absolute & sliding expiration through options void Set(string key, byte[] value, DistributedCacheEntryOptions options); } } |
Configurando NCache como provedor IDistributedCache
Aqui está como você configura NCache como seu IDistributedCache
provedor em seu ASP.NET Core Startup
classe.
1 2 3 4 5 6 7 8 9 10 11 |
public class Startup { ... public void ConfigureServices (IServiceCollection services) { ... services.AddNCacheDistributedCache(); ... } ... } |
NCache Adicionar ao carrinho ASP.NET Core Cache ASP.NET Core Provedor de sessão
Por que escolher NCache API sobre IDistributedCache?
Se suas necessidades de cache forem bastante básicas e você quiser a flexibilidade de alterar o fornecedor de cache distribuído sem problemas, vá em frente e use o IDdistribuídoCache interface. Ele permite que você altere seu fornecedor de cache sem problemas. Mas compare isso com o custo de não ter muitos recursos avançados de cache.
Outra opção é usar NCache API diretamente do seu ASP.NET Core aplicação. NCache A API é muito semelhante à API de cache do ASP.NET herdada. Ele contém vários recursos gratuitos que permitem que você aproveite ao máximo um cache distribuído de nível empresarial.
Lembre-se, quanto mais dados você puder armazenar em cache, maior será o benefício de desempenho e escalabilidade para seu aplicativo. E, sem os recursos avançados de cache, você geralmente fica restrito ao cache de dados somente leitura ou simples. Leia mais sobre todos os diferentes NCache recursos de cache que você sente falta usando o IDistributedCache
provedor.
Armazenando ASP.NET Core Sessões em Cache Distribuído
Antes do ASP.NET Core, o ASP.NET mais antigo fornecia uma estrutura de provedor de estado de sessão ASP.NET que permitia que provedores de armazenamento de sessão de terceiros se conectassem. ASP.NET Core sessions fornece um mecanismo semelhante para conectar provedores de armazenamento de terceiros. Abaixo estão as duas maneiras de usar NCache como ASP.NET Core armazenamento de sessão:
Use NCache para ASP.NET Core Sessões através de IDistributedCache
Assim que você configurar NCache as IDistributedCache
provedor de ASP.NET Core, NCache torna-se automaticamente a opção de armazenamento padrão para ASP.NET Core sessões e você não precisa fazer mais nada. Mas observe que esta implementação é limitada em recursos em comparação com a mais antiga (antes do ASP.NET Core) Estado da Sessão ASP.NET.
Aqui estão algumas das coisas que o ASP padrão.NET Core A implementação de sessões carece de:
- Bloqueio de sessão: ASP.NET Core não fornece bloqueio de sessão. Isso é algo ainda mais antigo que o ASP.NET Session State forneceu.
byte[]
array para objetos personalizados: ASP.NET Core força você a converter todos os seus objetos personalizados em uma matriz de bytes antes que você possa armazenar na sessão. Mesmo o estado de sessão ASP.NET mais antigo oferece suporte a objetos personalizados.
Use NCache como ASP.NET Core Provedor de sessões
Para contornar o ASP padrão.NET Core Implementação de sessões através IDistributedCache
provedor, NCache implementou seu próprio ASP.NET Core Provedor de sessões. Esta implementação tem muito mais recursos do que o padrão.
Aqui está como você configura isso em seu Startup
classe.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Startup { ... public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ... app.UseNCacheSession(); ... } ... } |
Você pode especificar ASP.NET Core Configurações de sessão para o acima em appsettings.json
arquivo da seguinte forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ ... "NCacheSessions": { ... "CacheName": "demoCache", "EnableLogs": "True", "RequestTimeout": "90", "EnableDetailLogs": "False", "ExceptionsEnabled": "True", "WriteExceptionsToEventLog": "False" } ... } |
NCache Adicionar ao carrinho NCache Docs configurar NCache Provedor IDistributedCache
Conclusão
A Microsoft oferece duas opções como IDistributedCache
provedores. Um é o SQL Server e o segundo é Redis. NCache é melhor do que as duas opções. Em comparação com o SQL Server, NCache é muito mais rápido e escalável. Também, NCache também é melhor do que Redis pelos seguintes motivos:
- .NET nativo: NCache é 100% .NET nativo e, portanto, se encaixa muito bem na sua pilha de aplicativos .NET. Por outro lado, Redis vem de um plano de fundo Linux e não é um cache .NET nativo.
- Mais rápido que Redis: NCache é mais rápida do que realmente Redis as NCache O recurso Client Cache oferece NCache um aumento significativo de desempenho.
- Mais Características: NCache oferece uma série de recursos de cache distribuído muito importantes que Redis não. Veja mais detalhes neste Redis vs NCache.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições