Vamos criar um aplicativo ASP.NET Core CRUD com NoSQL.
Criarei uma API HTTP CRUD básica (CRUD é Create, Read, Update, Delete). Essa API estará operando em uma lista de desejos de presentes: todos os itens que eu quero que você compre para mim no meu aniversário. Não criarei uma interface de usuário, mas você pode usar essa API com a estrutura do lado do cliente de sua escolha (como React ou Blazor, etc.).
Esta primeira postagem incluirá toda a configuração do projeto ASP.NET Core NoSQL e o banco de dados de configuração. As próximas postagens criarão os pontos de extremidade CRUD reais.
Ferramentas de desenvolvedor de que você precisará
Estou usando o Visual Studio 2022 (Enterprise), mas você deve ser capaz de acompanhar o processo com o JetBrains Rider, VSCode ou qualquer outro programa que use normalmente. (Se precisar de ajuda, ficarei feliz em ajudar!)
Também estou usando Couchbase Capellaque é a oferta de DBaaS (banco de dados como serviço) do Couchbase.
Já me inscrevi em uma conta de avaliação. Você também pode, vá para: https://cloud.couchbase.com/sign-up
O amostra de viagem já está carregado quando você implanta o cluster de avaliação. Mas estou usando o outro balde que criei chamado demonstração.
Dentro desse balde, há um Padrão portanto, vou usá-lo. E dentro desse escopo, criei um Lista de desejos coleção. (Saiba mais sobre escopos e coleções no Capella)
Credenciais CRUD
Você também precisará criar credenciais de banco de dados com acesso de leitura/gravação a tudo no demonstração balde.
Finalmente, colocar o endereço IP na lista de permissões a partir do qual você compilará e executará seu aplicativo, para que possa se conectar.
Iniciar um aplicativo ASP.NET Core
No Visual Studio, selecione File→New →Project→ASP.NET Core Web API. Eu o chamei de Tutorial do AspNetCore.
Estou usando o .NET 6 e todos os outros padrões estão corretos (observe que o OpenAPI, também conhecido como Swagger, está ativado).
Esse processo cria um site shell básico.
Em seguida, vamos usar o NuGet para adicionar o Couchbase .NET SDK (CouchbaseNetClient).
Notas sobre o SDK do .NET
O SDK do Couchbase .NET permite que nos conectemos a um cluster do Couchbase. O Couchbase é um banco de dados distribuído, portanto, normalmente, há vários servidores (chamados de "nós") em um grupo (chamado de "cluster") que atuam juntos. Um cluster tem um ou mais "buckets", que, como você viu anteriormente, contém escopos, que contêm coleções, que, por sua vez, contêm documentos.
Os dados em um bucket são distribuídos entre os nós do cluster, mas são tratados como uma única entidade lógica pelo SDK.
Em uma coleção, cada documento tem uma "chave" exclusiva e um "valor" JSON.
Na versão de teste do Capella, haverá apenas um único nó. No entanto, isso não afeta seu código: quando os nós são adicionados, o SDK é inteligente o suficiente para encontrá-los por conta própria.
Na produção, você normalmente terá pelo menos três nóspossivelmente alguns buckets e quantos escopos e coleções forem necessários (dentro do razoável).
Injeção de dependência
Também vou adicionar o Couchbase.Extensions.DependencyInjection pacote NuGet. Isso fornecerá métodos de extensão para adicionar facilmente os recursos do Couchbase à injeção de dependência integrada do ASP.NET Core.
(Esse pacote facilita o uso do Couchbase com o ASP.NET Core, mas é opcional).
Conectar o ASP.NET Core ao Couchbase Capella
Vamos escrever algum código no aplicativo ASP.NET para nos conectarmos ao cluster do Capella.
Em Program.csUse o método de extensão nos serviços:
1 2 3 4 5 6 7 8 |
construtor.Serviços.AddCouchbase(x => { x.ConnectionString = "couchbases://" + "<>"; x.Nome de usuário = "svc-wishlist"; x.Senha = "TOP-secret-123!"; x.HttpIgnoreRemoteCertificateMismatch = verdadeiro; x.KvIgnoreRemoteCertificateNameMismatch = verdadeiro; }); |
(Neste exemplo, estou codificando as informações de conexão, mas você também pode usar a configuração em Configurações do aplicativo.json em vez disso).
Mais uma etapa: quando o aplicativo for interrompido, preciso que ele libere todos os recursos do Couchbase que o .NET estiver usando.
Você pode registrar o código a ser executado em eventos de tempo de vida, como ApplicationStopped.
1 2 3 4 |
aplicativo.Vida útil.ApplicationStopped.Registro(() => { aplicativo.Serviços.GetService<ICouchbaseLifetimeService>()?.Fechar(); }); |
Agora, o sistema de injeção de dependência do ASP.NET Core injetará automaticamente os objetos do Couchbase quando quisermos.
Modelagem de dados
Antes de escrevermos mais código, vamos pensar no modelo de dados. Será um modelo muito simples: apenas o nome de um item para a lista de desejos.
Em um banco de dados de documentos NoSQL, cada parte dos dados tem uma chave e um valor JSON. A chave pode ser apenas um GUID para nossos propósitos (você também pode criar uma chave mais significativa, se quiser). Cada item da lista de desejos tem um "nome", portanto, haverá um nome campo.
Criarei uma classe C# para representar um item:
1 2 3 4 5 |
público classe Item da lista de desejos { público Guia? Id { obter; definir; } público string Nome { obter; definir; } } |
Um modelo realmente simples, mas como o Couchbase não exige um esquema predefinido, adicionar mais campos pode ser tão fácil quanto adicioná-los aqui mesmo na classe C#.
Vamos "preparar" o banco de dados com alguns itens da lista de desejos.
Navegue até a coleção da lista de desejos no Couchbase Capella e adicione alguns documentos.
O primeiro documento terá uma chave "3ca6e87e-c3a6-4637-989d-33cbca5002b5", e darei a ele o nome de "Camiseta Skyline Chili“.
O segundo documento terá uma chave "31c9cc33-8dfe-440c-bd1b-bb038939d2e0", darei a ele o nome de "Joey Votto Jersey“.
Você pode adicionar outros documentos, se desejar, mas, no final, criaremos um aplicativo em que os documentos serão adicionados/alterados por meio do aplicativo ASP.NET Core.
Controlador para ações CRUD NoSQL
Em seguida, crie um controlador ASP.NET para minhas operações CRUD. Eu o chamo de GiftsController.
No construtor, especifique um IBucketProvider parâmetro. Esse é um objeto que pode ser usado para obter um Bucket do Couchbase Injeção de dependência módulo. Eu o usarei para obter um Balde para o objeto demonstração balde.
1 2 3 4 5 6 7 8 9 10 11 |
público classe GiftsController : Controlador { privado somente leitura IBucketProvider _bucketProvider; público GiftsController(IBucketProvider provedor de balde) { _bucketProvider = provedor de balde; } // ... } |
Você pode executar o aplicativo neste momento, apenas para verificar se a conexão funciona. Ainda não haverá nenhum ponto de extremidade (exceto o Previsão do tempo exemplo que a Microsoft colocou como exemplo).
O que vem a seguir?
Agora temos um projeto ASP.NET Core, conectado ao Couchbase Capella. Na próxima postagem do blog, abordaremos a criação dos endpoints CRUD reais.
Enquanto isso, você pode:
- Inscreva-se para um teste gratuito do Capella
- Confira o Couchbase Playground para .NET exemplos que você pode executar diretamente no navegador.