분산 세션은 세션 상태를 ASP.NET Core 애플리케이션 외부에 저장할 수 있는 방법입니다. 특히 웹 사이트를 확장해야 할 때, 세션 상태를 저장하는 데 Couchbase를 사용하면 도움이 될 수 있습니다. 고정 세션.
제가 만든 코드 샘플은 다음에서 확인할 수 있습니다. GitHub.
이 글을 작성하는 시점에 Couchbase.Extensions.Session은 베타 릴리스입니다.
세션 상태란 무엇인가요?
세션 상태는 단순히 특정 사용자에 대한 데이터를 저장하는 방법입니다. 일반적으로 토큰은 사용자 쿠키에 저장되며 해당 토큰은 서버 측의 일부 데이터 집합에 대한 키 역할을 합니다.
ASP.NET에서 세션을 사용하도록 설정하는 방법
ASP.NET 또는 ASP Classic에 익숙한 경우 다음을 사용하여 이 작업을 수행합니다. 세션. 모든 쿠키 작업은 백그라운드에서 이루어지므로 간단히 세션 를 사전으로 사용하여 원하는 데이터를 저장하고 검색할 수 있습니다.
|
1 2 |
if(Session["IsLoggedIn"] = false) Session["Username"] = "matt"; |
기본적으로 ASP.NET 및 ASP Classic에서 이 정보는 웹 애플리케이션 프로세스의 일부로 메모리에 저장됩니다.
ASP.NET Core에서는 세션을 다음과 같이 구성하여 이 기능을 선택할 수도 있습니다. 추가 세션.
먼저, Startup.cs의 구성 함수를 사용하여 ASP.NET Core에 세션을 사용하도록 지시합니다:
|
1 |
app.UseSession(); |
그런 다음 서비스 구성 함수, 사용 추가 세션 를 클릭하여 세션 공급자 서비스를 추가합니다.
|
1 2 |
services.AddDistributedMemoryCache(); services.AddSession(); |
(기본 세션 설정이 사용됩니다. ASP.NET Core 문서 를 참조하세요.)
ASP.NET Core에서 세션 관리란 무엇인가요?
분산 세션은 세션 상태를 ASP.NET Core 애플리케이션 외부에 저장할 수 있는 방법입니다. 특히 고정 세션을 사용하지 않으려는 경우 세션 상태를 저장하는 데 Couchbase를 사용하면 웹사이트를 확장해야 할 때 도움이 될 수 있습니다.
분산 세션 관리가 필요한 이유는 무엇인가요?
그러나 여러 웹 서버로 웹 애플리케이션을 확장하는 경우 세션에 대해 몇 가지 결정을 내려야 합니다. 처리 중 세션을 계속 사용하려면 고정 세션을 구성해야 합니다(사용자가 처음 접속하는 웹 서버가 이후 요청에 대해 '고정'되는 서버가 됩니다). 여기에는 몇 가지 잠재적인 단점이 있습니다( 서버 오류에 대한 이 스레드 그리고 마이크로소프트의 테크넷 매거진에 실린 이 기사).
고정 세션을 사용하지 않으려면 진행 중인 세션 옵션을 사용할 수 없습니다. 대신 분산 세션을 사용해야 합니다. 세션 데이터를 저장할 위치에는 여러 가지 옵션이 있지만, 메모리 우선 아키텍처와 유연한 확장 기능을 갖춘 Couchbase가 좋은 선택입니다.
ASP.NET Core에서 분산 세션 사용
코드 작성을 시작하기 전에 버킷(저는 "세션스토어"라고 명명했습니다)으로 실행되는 Couchbase Server 클러스터가 필요합니다. 또한 버킷에 데이터 리더 및 데이터 작성자 권한이 있는 사용자를 만들어야 합니다(저는 간단하게 하기 위해 제 사용자를 "세션스토어"라고 불렀습니다).
Couchbase.Extensions.Session 추가하기
이제 Visual Studio에서 ASP.NET Core 애플리케이션을 엽니다. (저는 새로운 ASP.NET Core MVC 앱을 만들었습니다. GitHub에서 찾을 수 있습니다.). 그런 다음 NuGet을 사용하여 Couchbase.Extensions.Session 라이브러리를 설치합니다:
- NuGet UI를 사용하거나(아래 참조), 또는
설치-패키지 Couchbase.Extensions.Session -버전 1.0.0-beta2패키지 관리자를 사용하거나닷넷 Couchbase.Extensions.Session 패키지 추가 --버전 1.0.0-beta2닷넷 명령줄을 사용하여

Couchbase 구성
세션 공급자를 구성하기 위해 이 Couchbase.Extensions 시리즈를 따라가다 보면 익숙해 보이는 코드를 작성하게 됩니다.
그리고 서비스 구성 메서드에 구성 코드를 추가할 수 있습니다.
먼저, 다음을 사용합니다. 카우치베이스 추가를 사용하여 수행됩니다. 종속성 주입 확장자입니다.
그런 다음 다음을 사용하여 Couchbase에 대한 분산 캐시를 설정합니다. 추가 분산 카우치베이스 캐시에 대한 블로그 게시물에서 다룬 바 있습니다. 분산 캐싱.
|
1 2 3 4 5 6 |
services.AddCouchbase(opt => { opt.Servers = new List<Uri> { new Uri("https://localhost:8091") }; }); services.AddDistributedCouchbaseCache("sessionstore", "password", opt => { }); |
마지막으로 다음을 사용하여 Couchbase를 세션 저장소로 구성합니다. 카우치베이스 세션 추가.
|
1 2 3 4 5 |
services.AddCouchbaseSession(opt => { opt.CookieName = ".MyApp.Cookie"; opt.IdleTimeout = new TimeSpan(0, 0, 20, 0); }); |
필요한 경우 유휴 시간 제한(세션이 사용되지 않은 후 만료될 때까지의 시간), 쿠키 이름 등을 구성할 수 있습니다. 위의 예에서는 시간 제한을 20분으로 설정하고 쿠키 이름을 ".MyApp.Cookie"로 설정했습니다.
분산 세션에 쓰기
세션 데이터에 액세스하려면 다음을 사용할 수 있습니다. HttpContext.Session.
먼저 세션에 무언가를 쓰고 싶습니다. 세션에서 정보 컨트롤러 액션을 사용했습니다. SetObject 메서드를 사용합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public IActionResult About() { HttpContext.Session.SetObject("sessionkey", new { Name = "Matt", Twitter = "@mgroves", Guid = DateTime.Now }); ViewData["Message"] = "I put a value in your session. Click 'Contact' to see it."; return View(); } |
이 시점부터 '정보' 페이지를 클릭하여 볼 때마다 "세션키" 키를 사용하여 세션에 새 값이 저장됩니다. Couchbase 콘솔로 전환하면 저장되는 데이터를 확인할 수 있습니다.

사용자의 세션은 하나의 문서로 표현된다는 점에 유의하세요. 따라서 아래와 같이 다른 세션 값을 삽입하면 해당 값은 동일한 문서에 저장됩니다.
|
1 2 3 4 5 6 |
HttpContext.Session.SetObject("sessionkey2", new { Address = "123 Main St", City = "Lancaster", State = "OH" }); |
결과 문서는 다음과 같습니다:

카우치베이스 문서는 20MB로 제한되므로 세션에 넣는 데이터의 양이 너무 많지 않도록 주의해야 합니다.
분산 세션에서 읽기
세션에서 값을 가져오려면 다음을 사용할 수 있습니다. GetObject 를 클릭하고 세션 키를 입력합니다. 샘플 코드에서는 이 작업을 연락처 액션:
|
1 2 3 4 5 6 |
public IActionResult Contact() { ViewData["Message"] = HttpContext.Session.GetObject<dynamic>("sessionkey"); return View(); } |
'정보' 페이지를 한 번 이상 방문한 후 '연락처' 페이지로 이동합니다. 페이지에 세션 개체가 인쇄된 것을 볼 수 있습니다.

여기까지입니다. 비교적 자명하게 사용할 수 있는 다른 방법도 있습니다. 세션. 또한 ASP.NET Core 문서에 설명되어 있습니다..
한 가지 더: 쿠키 이름(".MyApp.Cookie")을 지정했습니다. 이 쿠키는 원하는 브라우저에서 볼 수 있습니다. Chrome에서는 Ctrl+Shift+I를 누르고 '애플리케이션' 탭으로 이동합니다. 쿠키와 쿠키 값이 표시됩니다.

일반적으로 ASP.NET Core 개발자로서 일상적으로 이 세부 사항을 알 필요는 없지만, 만일을 대비하여 작동 방식을 알아두는 것이 좋습니다.
요약
Couchbase용 분산 세션 확장은 ASP.NET Core 애플리케이션을 확장하는 데 도움이 되는 또 다른 도구입니다. 이 편리한 .NET 확장자를 사용하면 Couchbase가 어떻게 참여 데이터베이스 플랫폼이 필요합니다.
Couchbase 확장 기능에 대한 질문이나 의견이 있는 경우, 다음을 확인하세요. GitHub 리포지토리 또는 카우치베이스 .NET SDK 포럼.
아래에 댓글을 남기거나 다음에서 저를 찾아 .NET 및 Couchbase에 관한 모든 질문에 대해 문의해 주세요. 트위터 @mgroves.