NoSQL 애플리케이션을 사용하여 ASP.NET Core CRUD를 빌드해 보겠습니다.
기본 CRUD HTTP API를 만들겠습니다(CRUD는 생성, 읽기, 업데이트, 삭제). 이 API는 내 생일에 사주고 싶은 선물 위시리스트에서 작동할 것입니다. UI를 구축하지는 않겠지만, 이 API를 원하는 클라이언트 측 프레임워크(예: React 또는 Blazor 등)와 함께 사용할 수 있습니다.
이 첫 번째 게시물에는 모든 ASP.NET Core NoSQL 프로젝트 설정 및 구성 데이터베이스가 포함됩니다. 다음 게시물에서는 실제 CRUD 엔드포인트를 구축할 예정입니다.
필요한 개발자 도구
저는 Visual Studio 2022(Enterprise)를 사용 중이지만 JetBrains Rider, VSCode 또는 평소 사용하던 것을 사용해도 잘 따라할 수 있을 것입니다. (도움이 필요하시면 기꺼이 도와드리겠습니다!)
저는 또한 카우치베이스 카펠라는 서비스형 데이터베이스(DBaaS) 카우치베이스 제품입니다.
이미 평가판 계정에 가입했습니다. 여러분도 할 수 있습니다: https://cloud.couchbase.com/sign-up
그리고 여행 샘플 버킷은 평가판 클러스터를 배포할 때 이미 로드되어 있습니다. 하지만 저는 내가 만든 또 다른 버킷 호출 데모.
그 버킷 안에는 _기본값 범위가 있으므로 이 범위를 사용하겠습니다. 그리고 그 범위 안에 위시리스트 컬렉션. (Capella의 범위 및 컬렉션에 대해 자세히 알아보기)
CRUD 자격 증명
또한 다음을 수행해야 합니다. 데이터베이스 자격 증명 만들기 의 모든 항목에 대한 읽기/쓰기 액세스 권한이 있는 데모 버킷.
마지막으로, IP 주소를 화이트리스트에 추가합니다. 에서 앱을 컴파일하고 실행하여 연결할 수 있도록 합니다.
ASP.NET Core 앱 시작
Visual Studio에서 파일→새로 만들기→프로젝트→ASP.NET Core 웹 API. 나는 그것을 AspNetCore 자습서.
저는 .NET 6을 사용 중이며 다른 모든 기본값은 정상입니다(OpenAPI, 일명 Swagger가 활성화되어 있음).
이 프로세스를 통해 기본 셸 사이트가 생성됩니다.
다음으로 NuGet을 사용하여 Couchbase .NET SDK를 추가해 보겠습니다(카우치베이스넷클라이언트).
.NET SDK 관련 참고 사항
Couchbase .NET SDK를 사용하면 Couchbase 클러스터에 연결할 수 있습니다. Couchbase는 분산 데이터베이스이므로 일반적으로 한 그룹("클러스터"라고 함)에 여러 서버("노드"라고 함)가 있으며 모두 함께 작동합니다. 클러스터에는 하나 이상의 "버킷"이 있으며, 앞서 보았듯이 컬렉션을 포함하는 범위가 있고, 그 범위에는 문서를 포함하는 컬렉션이 있습니다.
버킷의 데이터는 클러스터의 노드에 분산되어 있지만 SDK에서는 하나의 논리적 엔티티로 취급합니다.
컬렉션 내에서 각 문서 에는 고유한 '키'와 JSON '값'이 있습니다.
카펠라 평가판 버전에는 노드가 하나만 있습니다. 하지만 코드에는 영향을 미치지 않습니다. 노드가 추가되면 SDK가 스스로 노드를 찾을 수 있을 만큼 똑똑하기 때문입니다.
프로덕션 환경에서는 일반적으로 최소 3개의 노드가 있습니다.버킷 몇 개, 그리고 필요한 만큼의 범위와 컬렉션을 (합리적인 범위 내에서) 사용할 수 있습니다.
종속성 주입
또한 Couchbase.Extensions.DependencyInjection NuGet 패키지. 이 패키지는 ASP.NET Core의 기본 제공 종속성 주입에 Couchbase 기능을 쉽게 추가할 수 있는 확장 메서드를 제공합니다.
(이 패키지를 사용하면 ASP.NET Core와 함께 Couchbase를 더 쉽게 사용할 수 있지만 선택 사항입니다).
카우치베이스 카펠라에 ASP.NET Core 연결하기
ASP.NET 앱에서 Capella 클러스터에 연결하기 위한 몇 가지 코드를 작성해 보겠습니다.
In Program.cs를 클릭하고 서비스에서 확장 메서드를 사용합니다:
1 2 3 4 5 6 7 8 |
빌더.서비스.카우치베이스 추가(x => { x.연결 문자열 = "couchbases://" + "<>"; x.사용자 이름 = "svc-wishlist"; x.비밀번호 = "최고 기밀-123!"; x.HttpIgnore원격 인증서 불일치 = true; x.KvIgnore원격 인증서 이름 불일치 = true; }); |
(이 예제에서는 연결 정보를 하드코딩하고 있지만 다음에서 구성을 사용할 수도 있습니다. appsettings.json 대신).
한 단계 더: 애플리케이션이 중지되면 .NET이 사용 중인 모든 Couchbase 리소스를 해제해야 합니다.
다음과 같은 평생 이벤트에서 실행할 코드를 등록할 수 있습니다. 응용 프로그램 중지.
1 2 3 4 |
앱.평생.응용 프로그램 중지.등록하기(() => { 앱.서비스.GetService<ICouchbaseLifetimeService>()?.닫기(); }); |
이제 ASP.NET Core의 종속성 주입 시스템은 우리가 원할 때 자동으로 Couchbase 개체를 주입합니다.
데이터 모델링
코드를 더 작성하기 전에 데이터 모델에 대해 생각해 봅시다. 위시리스트의 항목 이름만 있는 매우 간단한 모델이 될 것입니다.
NoSQL 문서 데이터베이스에서 각 데이터에는 키와 JSON 값이 있습니다. 키는 그냥 GUID일 수 있습니다(원한다면 더 의미 있는 키로 만들 수도 있습니다). 위시리스트의 각 항목에는 "이름'라는 문구가 표시되어 있으므로 이름 필드에 입력합니다.
항목을 나타내는 C# 클래스를 만들어 보겠습니다:
1 2 3 4 5 |
public 클래스 위시리스트 항목 { public Guid? Id { get; set; } public 문자열 이름 { get; set; } } |
매우 간단한 모델이지만 Couchbase에는 사전 정의된 스키마가 필요하지 않으므로 필드를 추가하는 것은 여기 C# 클래스에서 바로 추가하는 것만큼이나 간단합니다.
이제 몇 가지 위시리스트 항목으로 데이터베이스를 '프라이밍'해 보겠습니다.
카우치베이스 카펠라에서 위시리스트 컬렉션으로 이동하여 몇 개의 문서를 추가합니다.
첫 번째 문서에는 키 "3ca6e87e-c3a6-4637-989d-33cbca5002b5"라는 이름을 지정하고 "스카이라인 칠리 티셔츠“.
두 번째 문서에는 키 "31c9cc33-8dfe-440c-bd1b-bb038939d2e0"라는 이름을 지정합니다.조이 보토 저지“.
원하는 경우 다른 문서를 추가할 수 있지만, 궁극적으로는 ASP.NET Core 앱을 통해 문서를 추가/변경할 수 있는 앱을 만들 예정입니다.
NoSQL CRUD 작업용 컨트롤러
다음으로, CRUD 작업을 위한 ASP.NET 컨트롤러를 만듭니다. 저는 이것을 선물 컨트롤러.
생성자에서 IBucketProvider 매개변수입니다. 이것은 카우치베이스에서 버킷을 가져오는 데 사용할 수 있는 객체입니다. 의존성 주입 모듈을 추가합니다. 이를 사용하여 버킷 객체에 대한 데모 버킷.
1 2 3 4 5 6 7 8 9 10 11 |
public 클래스 선물 컨트롤러 : 컨트롤러 { 비공개 읽기 전용 IBucketProvider _버킷 공급자; public 선물 컨트롤러(IBucketProvider 버킷 공급자) { _버킷 공급자 = 버킷 공급자; } // ... } |
이 시점에서 앱을 실행하여 연결이 작동하는지 확인할 수 있습니다. 아직 엔드포인트는 없습니다( 날씨 예보 를 예로 들어 설명합니다.)
다음 단계는 무엇인가요?
이제 카우치베이스 카펠라에 연결된 ASP.NET Core 프로젝트가 생겼습니다. 다음 블로그 게시물에서는 실제 CRUD 엔드포인트를 만드는 방법에 대해 알아보겠습니다.
그동안은 가능합니다:
- 아카펠라 무료 체험 신청하기
- 다음 내용을 확인하세요. .NET용 카우치베이스 플레이그라운드 브라우저에서 바로 실행할 수 있는 예제입니다.