NCache 겉보기에는 ASP와 통합.NET Core 뼈대. 와 함께 NCache, ASP에서 애플리케이션 데이터 또는 응답을 캐시할 수 있습니다..NET Core 응용 프로그램. 다른 것도 살펴보자 NCache ASP에 대한 기능.NET Core 애플리케이션: ASP를 사용한 세션 상태 캐싱.NET Core.
HTTP 및 세션 상태
먼저 약간의 배경. HTTP는 상태 비저장 프로토콜입니다. 즉, 요청은 서로 독립적이며 서버는 이전 요청의 사용자 데이터를 보유하지 않습니다. 그러나 사용자가 웹 애플리케이션을 탐색하는 동안 사용자 데이터를 저장해야 하는 경우 요청 사이에 사용자 값을 유지해야 합니다.
ASP.NET Core 공식 문서는 다음을 위한 몇 가지 접근 방식을 설명합니다. 상태 관리. 쿠키, 숨겨진 필드, 쿼리 문자열 등이 있습니다.
요청 간에 사용자 데이터를 유지하려면 ASP.NET Core 쿠키와 서버 측 저장 메커니즘에 의존합니다. 모든 요청에 대해 ASP.NET Core 식별자가 있는 쿠키를 전달하여 서버 측에서 세션 데이터를 가져옵니다. 기본적으로 ASP.NET Core 세션 데이터에 메모리 내 저장소를 사용합니다.
그러나 세션 데이터에 대해 메모리 내 스토리지를 사용하면 몇 가지 단점이 있습니다. 애플리케이션 서버가 오프라인 상태가 되면 세션 데이터가 손실됩니다. 트래픽을 다시 라우팅하면 새 위치에 복제된 세션 데이터를 얻지 못합니다. 그리고 서버 팜이 있는 경우 세션을 특정 애플리케이션 인스턴스에 연결해야 하므로 애플리케이션을 확장하기가 어렵습니다.
NCache HTTP 세션 상태 캐싱용
우리는 사용할 수 있습니다 NCache 세션 상태 캐싱을 위해.
와 NCache, 우리는 정확하게 세션 데이터를 클러스터의 다른 프로세스에 저장합니다. 이렇게 하면 애플리케이션 서버의 메모리 양에 제한을 받지 않습니다. 또한 캐시 클러스터에 더 많은 서버를 추가하여 트랜잭션 및 스토리지 용량을 늘려 캐시 클러스터를 확장할 수 있습니다.
덕분에 NCache 캐싱 토폴로지 세션 복제, 응용 프로그램 서버가 오프라인이 되더라도 모든 서버 노드에서 세션 데이터를 계속 사용할 수 있습니다.
와 NCache, 다른 지역이나 데이터 센터에 세션 데이터를 복제할 수 있습니다. 예를 들어 재해 복구 시 항상 세션 데이터를 사용할 수 있습니다. 세션 데이터를 생성 위치에 유지하고 지역 간에 트래픽을 이동할 때만 세션 데이터를 이동하여 대역폭 소비 비용을 낮게 유지할 수 있습니다.
더 많은 혜택을 이용하려면 NCache 세션 상태 확인 ASP.NET Core 캐싱의 이점 및 개요.
사용하려면 몇 가지 코드만 변경하면 됩니다. NCache 세션 상태 캐싱을 위해. 두 가지 접근 방식이 있습니다. NCache 세션 공급자 또는 IDistributedCache
공급자.
사용하기 전에 NCache 세션 제공자로서 우리는 AspNetCore.Session.NCache
NuGet 패키지를 추가하고 Alachisoft.NCache.Web.SessionState
네임 스페이스.
추가하자 NCache 샘플 .NET 6.0 ASP에 대한 세션 공급자로.NET Core 웹 애플리케이션. 이와 같이,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using Alachisoft.NCache.Web.SessionState; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddControllersWithViews(); // 1. Add NCache as a Session Provider builder.Services.AddNCacheSession(config => { config.CacheName = "demoClusteredCache"; // To log all error information. (Optional) config.EnableLogs = true; // An identifier to make SessionId unique between applications. (Optional) config.SessionAppId = "demoApp"; }); // Alternatively, read settings from the appsettings.json file // //var ncacheSettingsSection = builder.Configuration.GetSection("NCacheSettings"); //builder.Services.AddNCacheSession(ncacheSettingsSection); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); // 2. Store NCache session data app.UseNCacheSession(); app.MapRazorPages(); app.MapDefaultControllerRoute(); app.Run(); |
먼저 추가합니다. NCache ASP에 대한 세션 상태 캐싱을 위한 서비스.NET Core 종속성 컨테이너. 이를 위해 우리는 AddNCacheSession()
방법. 그것은 기대 NCacheSessionConfiguration
물체. 필수 매개변수로 캐시 이름을 전달해야 합니다. 선택적으로 로그를 활성화할 수 있습니다(EnableLogs = true
) 동일한 세션 데이터를 사용하는 애플리케이션 간에 세션 ID를 고유하게 만들기 위해 애플리케이션 식별자를 전달합니다(SessionAppId = "demoApp"
).
이러한 매개변수를 수동으로 구성하는 대신 다음을 사용할 수 있습니다. appsettings.json
파일을 만들고 구성 섹션을 AddNCacheSession()
방법.
이것은 appsettings.json
이전 예제의 설정 파일,
1 2 3 4 5 6 7 8 |
{ "NCacheSettings": { "CacheName": "demoClusteredCache", "EnableLogs": "true", "SessionAppId": "demoApp" }, // Other settings here... } |
설정에 대한 자세한 내용은 NCache 세션 공급자에 대해 확인하십시오. ASP.NET Core 세션 공급자 구성.
등록하면 NCache HTTP 요청 파이프라인을 구성해야 합니다. 우리는 추가해야 UseNCacheSession()
방법. 요청 파이프라인에서 미들웨어의 순서를 계속 주시합시다. 우리는 추가해야 NCache 세션 미들웨어는 세션 데이터를 읽는 다른 미들웨어보다 먼저 시작됩니다.
추가로 추가 후 NCache 서비스 및 미들웨어, 우리는 다음을 사용하여 세션 데이터에 액세스합니다. Http.Session
Razor 페이지 및 MVC 컨트롤러 내의 클래스입니다.
2. NCache 세션에 대한 IDistributedCache 구현
사용하는 대신 AddNCacheSession()
와 UseNCacheSession()
방법 등록 NCache 세션 공급자로서 ASP를 사용할 수 있습니다..NET Core 세션 NCache IDistributedCache 구현.
기본적으로 ASP.NET Core 가 AddDistributedMemoryCache()
의 메모리 내 구현을 등록하는 방법 IDistributedCache
.
해당 구현을 사용하는 대신 NCache 를 사용하여 구현 AddNCacheDistributedCache()
방법.
이번에는 다음을 설치합니다. NCache.Microsoft.Extensions.Caching
NuGet 패키지 및 사용 Alachisoft.NCache.Caching.Distributed
네임스페이스. 이전 샘플 웹 애플리케이션을 사용하도록 변경해 보겠습니다. NCache IDistributedCache
이행,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using Alachisoft.NCache.Caching.Distributed; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddControllersWithViews(); // 1. Add NCache Distributed Cache implementation builder.Services.AddNCacheDistributedCache(config => { config.CacheName = "demoClusteredCache"; // To log all error information. (Optional) config.EnableLogs = true; }); // 2. Add ASP.NET Core Session services builder.Services.AddSession(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); // 3. Add ASP.NET Core Session middleware app.UseSession(); app.MapRazorPages(); app.MapDefaultControllerRoute(); app.Run(); |
알림을 등록하는 대신 NCache 세션 상태 캐싱을 위한 서비스 및 미들웨어, ASP 사용.NET Core AddSession()
와 UseSession()
행동 양식. 그러나 우리는 다른 분산 캐시 구현을 지정합니다. 에서 온 NCache.
을 사용하려면 AddNCacheDistributedCache()
메서드를 사용하려면 캐시 이름을 필수 매개변수로 전달해야 합니다. 다시 말하지만, 우리는 appsetttings.json
대신 파일. 선택적으로 로그 및 예외를 활성화하고 요청 제한 시간 및 재시도를 변경할 수 있습니다. 사용 가능한 모든 구성 옵션의 경우 IDistributedCache
구현, 확인 ASP 구성.NET Core IDistributedCache.
이 단계 후에 다음을 사용하여 세션 데이터에 액세스할 수 있습니다. Http.Session
.
결론
이것이 우리가 ASP를 확장할 수 있는 방법입니다..NET Core 세션 상태 캐싱을 사용하는 애플리케이션 NCache. 결과적으로 애플리케이션에서 몇 가지 코드 변경 및 구성만 있으면 됩니다.
NCache 상태 관리를 위한 더 많은 기능이 있습니다. 예를 들어, NCache 처럼 작동 다중 지역 ASP.NET Core 세션 제공자. 또한 재해 복구 또는 트래픽 재라우팅의 경우 세션 데이터 손실을 방지하기 위해 세션 데이터를 복제할 수 있습니다.
또한 여전히 ASP를 사용하는 레거시 코드베이스가 있는 애플리케이션의 경우.NET Framework 새로운 ASP와 함께.NET Core, 우리는 할 수있다 구성 NCache 두 프레임워크 간의 세션 공유.
자, 자세히 살펴보세요 NCache 확인하여 세션 캐싱 NCache GitHub 공식 저장소 추측 게임을 빌드하기 위해 세션 캐싱을 사용하는 샘플 애플리케이션의 경우.