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

그리고 여행 샘플 버킷은 평가판 클러스터를 배포할 때 이미 로드되어 있습니다. 하지만 저는 내가 만든 또 다른 버킷 호출 데모.

Configure Couchbase buckets on Capella DBaaS

그 버킷 안에는 _기본값 범위가 있으므로 이 범위를 사용하겠습니다. 그리고 그 범위 안에 위시리스트 컬렉션. (Capella의 범위 및 컬렉션에 대해 자세히 알아보기)

Configure Couchbase Collections on Capella DBaaS

CRUD 자격 증명

또한 다음을 수행해야 합니다. 데이터베이스 자격 증명 만들기 의 모든 항목에 대한 읽기/쓰기 액세스 권한이 있는 데모 버킷.

Configure Couchbase credentials on Capella DBaaS

마지막으로, IP 주소를 화이트리스트에 추가합니다. 에서 앱을 컴파일하고 실행하여 연결할 수 있도록 합니다.

Configure Couchbase IP whitelist on Capella DBaaS

ASP.NET Core 앱 시작

Visual Studio에서 파일→새로 만들기→프로젝트→ASP.NET Core 웹 API. 나는 그것을 AspNetCore 자습서.

Setting up a ASP.NET project

저는 .NET 6을 사용 중이며 다른 모든 기본값은 정상입니다(OpenAPI, 일명 Swagger가 활성화되어 있음).

Default settings in a ASP.NET project

이 프로세스를 통해 기본 셸 사이트가 생성됩니다.

다음으로 NuGet을 사용하여 Couchbase .NET SDK를 추가해 보겠습니다(카우치베이스넷클라이언트).

Couchbase .NET SDK nuget

.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를 클릭하고 서비스에서 확장 메서드를 사용합니다:

(이 예제에서는 연결 정보를 하드코딩하고 있지만 다음에서 구성을 사용할 수도 있습니다. appsettings.json 대신).

한 단계 더: 애플리케이션이 중지되면 .NET이 사용 중인 모든 Couchbase 리소스를 해제해야 합니다.

다음과 같은 평생 이벤트에서 실행할 코드를 등록할 수 있습니다. 응용 프로그램 중지.

이제 ASP.NET Core의 종속성 주입 시스템은 우리가 원할 때 자동으로 Couchbase 개체를 주입합니다.

데이터 모델링

코드를 더 작성하기 전에 데이터 모델에 대해 생각해 봅시다. 위시리스트의 항목 이름만 있는 매우 간단한 모델이 될 것입니다.

NoSQL 문서 데이터베이스에서 각 데이터에는 키와 JSON 값이 있습니다. 키는 그냥 GUID일 수 있습니다(원한다면 더 의미 있는 키로 만들 수도 있습니다). 위시리스트의 각 항목에는 "이름'라는 문구가 표시되어 있으므로 이름 필드에 입력합니다.

항목을 나타내는 C# 클래스를 만들어 보겠습니다:

매우 간단한 모델이지만 Couchbase에는 사전 정의된 스키마가 필요하지 않으므로 필드를 추가하는 것은 여기 C# 클래스에서 바로 추가하는 것만큼이나 간단합니다.

이제 몇 가지 위시리스트 항목으로 데이터베이스를 '프라이밍'해 보겠습니다.

카우치베이스 카펠라에서 위시리스트 컬렉션으로 이동하여 몇 개의 문서를 추가합니다.

첫 번째 문서에는 키 "3ca6e87e-c3a6-4637-989d-33cbca5002b5"라는 이름을 지정하고 "스카이라인 칠리 티셔츠“.

두 번째 문서에는 키 "31c9cc33-8dfe-440c-bd1b-bb038939d2e0"라는 이름을 지정합니다.조이 보토 저지“.

Viewing Couchbase documents added to bucket

원하는 경우 다른 문서를 추가할 수 있지만, 궁극적으로는 ASP.NET Core 앱을 통해 문서를 추가/변경할 수 있는 앱을 만들 예정입니다.

NoSQL CRUD 작업용 컨트롤러

다음으로, CRUD 작업을 위한 ASP.NET 컨트롤러를 만듭니다. 저는 이것을 선물 컨트롤러.

생성자에서 IBucketProvider 매개변수입니다. 이것은 카우치베이스에서 버킷을 가져오는 데 사용할 수 있는 객체입니다. 의존성 주입 모듈을 추가합니다. 이를 사용하여 버킷 객체에 대한 데모 버킷.

이 시점에서 앱을 실행하여 연결이 작동하는지 확인할 수 있습니다. 아직 엔드포인트는 없습니다( 날씨 예보 를 예로 들어 설명합니다.)

다음 단계는 무엇인가요?

이제 카우치베이스 카펠라에 연결된 ASP.NET Core 프로젝트가 생겼습니다. 다음 블로그 게시물에서는 실제 CRUD 엔드포인트를 만드는 방법에 대해 알아보겠습니다.

그동안은 가능합니다:

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기