A Microsoft está favorecendo ASP.NET Core sobre o legado ASP.NET e planeja fazer todos os desenvolvimentos futuros no primeiro. Ou seja, o ASP.NET está lentamente se tornando obsoleto. Assim, os desenvolvedores estão mudando para ASP.NET Core para colher os benefícios de todas as futuras atualizações e tecnologias.
Mas, os usuários que usam ASP.NET há anos não podem fazer essa mudança tão facilmente. Em vez disso, eles mudam alguns de seus aplicativos para ASP.NET Core ao invés de todos eles. Essa configuração funciona para todos os cenários, exceto um, compartilhamento de sessão. Ou seja, os usuários não podem usar ou armazenar sessões ASP.NET em ASP.NET Core aplicações e vice-versa.
A solução é armazenar em cache as sessões em um cache distribuído, como NCache e deixe que ele lide com o compartilhamento de sessão entre seus aplicativos da web para você.
NCache Adicionar ao carrinho NCache Documentos ASP.NET NCache ASP.NET Core Docs
Compartilhar dados da sessão usando NCache
Os dados da sessão não podem ser compartilhados entre ASP.NET e ASP.NET Core formulários. Isso ocorre porque ambos serializam seus dados de sessão de maneira diferente e usam estruturas de dados diferentes. NCache supera esses problemas armazenando dados de sessão no cache usando seu método de serialização e uma estrutura de dados provisória. Portanto, permitir que os dados da sessão sejam legíveis em ASP.NET e ASP.NET Core aplicações.
O processo para configurar o compartilhamento de sessão usando NCache também é simples. Tudo o que você precisa fazer é baixar e instalar os pacotes NuGet NCache fornece para ASP.NET e ASP.NET Core e faça algumas alterações nos arquivos de configuração. Apenas siga os passos abaixo:
NCache Adicionar ao carrinho NCache Documentos de compartilhamento de sessão Serialização Compacta Dinâmica
Instalar pacotes NuGet para ASP.NET e ASP.NET Core
A primeira etapa é instalar os respectivos pacotes NuGet que NCache fornece compartilhamento de sessão entre ASP.NET e ASP.NET Core aplicações. NCache fornece o AspNet.SessionState.NCache Pacote NuGet para ASP.NET e AspNetCore.Session.NCache Pacote NuGet para ASP.NET Core.
Configurar aplicativo ASP.NET
Depois de instalar o pacote NuGet para seu aplicativo ASP.NET, você precisa fazer algumas alterações no web.config arquivo de sua aplicação. Debaixo de sessionState
tag, você precisa garantir que a cookieName
propriedade tem o mesmo valor para ASP.NET e ASP.NET Core aplicações.
Sob o providers
etiqueta, certifique-se de que sessionAppId
tem o mesmo valor para ambas as aplicações e o enableSessionSharing
propriedade tem o valor true
. Se alguma dessas propriedades estiver faltando, certifique-se de adicioná-las. Uma configuração de exemplo foi fornecida abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<sessionState ... customProvider="NCacheSessionProvider" cookieName="ASP.NET_CORE_SessionId" <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" enableSessionSharing="true" sessionAppId="NCacheSharedSessionApp" cacheName="myPartitionedCache" ... /> </providers> </sessionState> |
Configurar ASP.NET Core Aplicação
Depois de instalar o pacote NuGet para seu ASP.NET Core aplicativo, você precisa fazer algumas alterações no appsettings.json arquivo de sua aplicação. Assim como para ASP.NET, você precisa garantir que o CookieName
e SessionAppId
atributos têm o mesmo valor para ambas as aplicações e o EnableSessionSharing
atributo tem o valor true.
Depois disso, você deve usar o métodos de extensão fornecido por NCache para compartilhamento de sessão (explicado posteriormente). Uma amostra appsettings.json configuração do arquivo é fornecida abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
"NCacheSettings": { "CacheName": "demoCache", //Replace "demoCache" with the name of your cache "SessionAppId": "NCacheSharedSessionApp", "EnableSessionLocking": false, "SessionLockingRetry": -1, "EnableLogs": false, "EnableDetailLogs": false, "ExceptionsEnabled": false, "OperationRetry": 0, "operationRetryInterval": 0, "EnableSessionSharing": true, // Default value is false "SessionOptions": { "CookieName": "ASP.NET_CORE_SessionId", // For session sharing the cookie name for the web applications needs to be the same. "CookieDomain": null, "CookiePath": "/", "CookieHttpOnly": "True", "IdleTimeout": "20", "CookieSecure": "None" } } |
NCache Métodos de extensão para compartilhamento de sessão
NCache fornece métodos de extensão para o ASP.NET Core interface de sessão que suporta adição e busca de objetos personalizados e lida automaticamente com a serialização/desserialização de objetos para você. Isso elimina a necessidade de usar conversores binários/JSON ou escrever código para serializar/desserializar dados no cliente.
Se o usuário quiser habilitar o compartilhamento de sessão entre ASP.NET Core e aplicativos ASP.NET, eles devem usar esses métodos de extensão para armazenar e recuperar seus dados de sessão. NCache só pode desserializar e serializar objetos entre o ASP do usuário.NET Core e sessões ASP.NET se eles usarem esses métodos de extensão.
O exemplo de código a seguir adiciona um objeto personalizado ao ASP.NET Core sessão usando o Set
método fornecido pelo NCache método de extensão para ASP.NET Core.
1 2 3 4 5 |
string key = "ProductID:1001"; Product customObejct = GetProduct(1001); // Add custom object to session with against key HttpContext.Session.Set(key, customObject); |
O exemplo de código a seguir busca um objeto personalizado de um ASP.NET Core sessão usando o TryGetValue
método fornecido pelo NCache métodos de extensão para ASP.NET Core:
1 2 3 4 |
string key = "ProductID:1001"; // Fetch custom object against key it was added against ("ProductID:1001") HttpContext.Session.TryGetValue(key, out customObject); |
NCache Adicionar ao carrinho ASP.NET Core Documentos de cache de objetos NCache Documentos de compartilhamento de sessão
Benefícios do compartilhamento de sessão usando NCache
Nenhum outro fornecedor de cache ou de outra forma fornece esse recurso de compartilhamento de sessão entre ASP.NET e ASP.NET Core aplicações, apenas NCache fornece esse recurso. Não só isso, mas NCache também tornou sua configuração muito simples e não invasiva.
O usuário só precisa instalar os respectivos pacotes NuGet, fazer alterações nos respectivos arquivos de configuração (web.config para ASP.NET e appsettings.json para ASP.NET Core), e use o métodos de extensão fornecido por NCache para armazenar/recuperar suas sessões. Os usuários de ambas as estruturas da Web podem se beneficiar muito desse recurso e compartilhar seus dados de sessão em ambas as estruturas de forma transparente.
Conclusão
Como o compartilhamento de sessão, NCache também fornece muitos outros recursos avançados, eficientes e fáceis de configurar e usar características para todos os seus usuários. O compartilhamento de sessão é apenas um dos outros recursos exclusivos do NCache e não existem em nenhum outro lugar do mercado. Não acredite em mim? Experimente NCache agora e confira você mesmo!
NCache Adicionar ao carrinho Baixar NCache Comparação de edições
Ótimo blog! É conteúdo útil para todos .NET core desenvolvedores.
Obrigado por compartilhar!