Vamos a construir una aplicación ASP.NET Core CRUD con NoSQL.

Voy a crear una API HTTP CRUD básica (CRUD es Create, Read, Update, Delete). Esta API funcionará con una lista de regalos: todos los artículos que quiero que me compres por mi cumpleaños. No voy a construir una interfaz de usuario, pero se puede utilizar esta API con el framework del lado del cliente de su elección (como React o Blazor, etc).

Este primer post incluirá toda la configuración del proyecto ASP.NET Core NoSQL y la base de datos de configuración. Los próximos posts construirán los puntos finales CRUD reales.

Herramientas para desarrolladores

Estoy usando Visual Studio 2022 (Enterprise), pero deberías poder seguirlo sin problemas con JetBrains Rider, VSCode, o lo que uses normalmente. (Si necesitas ayuda, estaré encantado de ayudarte).

También estoy usando Couchbase Capellaque es la oferta DBaaS (Database as a Service) de Couchbase.

Ya me he registrado para obtener una cuenta de prueba. Tú también puedes: https://cloud.couchbase.com/sign-up

En viaje-muestra bucket ya está cargado cuando despliegas tu cluster de prueba. Pero estoy usando otro cubo que he creado llamado demo.

Configure Couchbase buckets on Capella DBaaS

Dentro de ese cubo, hay un Por defecto alcance, así que voy a usar eso. Y dentro de ese ámbito, he creado un lista de deseos colección. (Más información sobre ámbitos y colecciones en Capella)

Configure Couchbase Collections on Capella DBaaS

Credenciales CRUD

También tendrá que crear credenciales de base de datos con acceso de lectura/escritura a todo lo que hay en el demo cubo.

Configure Couchbase credentials on Capella DBaaS

Por fin, Lista blanca de direcciones IP desde el que compilarás y ejecutarás tu aplicación para poder conectarte.

Configure Couchbase IP whitelist on Capella DBaaS

Iniciar una aplicación ASP.NET Core

En Visual Studio, seleccione Archivo→Nuevo →Proyecto→ASP.NET Core Web API. Lo llamé AspNetCoreTutorial.

Setting up a ASP.NET project

Estoy usando .NET 6, y todos los demás valores predeterminados están bien (observe que OpenAPI, aka Swagger, está habilitado).

Default settings in a ASP.NET project

Este proceso crea un sitio shell básico.

A continuación, vamos a utilizar NuGet para añadir el SDK .NET de Couchbase (CouchbaseNetClient).

Couchbase .NET SDK nuget

Notas sobre el SDK .NET

El SDK .NET de Couchbase nos permite conectarnos a un Cluster de Couchbase. Couchbase es una base de datos distribuida, así que normalmente hay varios servidores (llamados "nodos") en un grupo (llamado "cluster") que actúan todos juntos. Un cluster tiene uno o más "buckets", que como has visto antes, contiene ámbitos, que contienen colecciones, que a su vez contienen documentos.

Los datos de un bucket se distribuyen entre los nodos del clúster, pero el SDK los trata como una única entidad lógica.

Dentro de una colección, cada documento tiene una "clave" única y un "valor" JSON.

Para la versión de prueba de Capella, sólo habrá un único nodo. Sin embargo, esto no afecta a su código: cuando se añaden nodos, el SDK es lo suficientemente inteligente como para ser capaz de encontrarlos por sí mismo.

En producción, normalmente tendrá al menos tres nodosposiblemente algunos cubos, y tantos ámbitos y colecciones como necesite (dentro de lo razonable).

Inyección de dependencia

También voy a añadir el Couchbase.Extensions.DependencyInjection paquete NuGet. Esto proporcionará métodos de extensión para añadir fácilmente capacidades de Couchbase a la inyección de dependencia integrada de ASP.NET Core.

(Este paquete facilita el uso de Couchbase con ASP.NET Core, pero es opcional).

Conectar ASP.NET Core a Couchbase Capella

Escribamos algo de código en la aplicación ASP.NET para conectar con el cluster Capella.

En Programa.csutilice el método de extensión en los servicios:

(En este ejemplo, estoy codificando la información de conexión, pero también puede utilizar la configuración en appsettings.json en su lugar).

Un paso más: cuando la aplicación se detiene, necesito que libere cualquier recurso de Couchbase que .NET esté utilizando.

Puede registrar código para que se ejecute en eventos de por vida, como AplicaciónParada.

Ahora, el sistema de inyección de dependencias de ASP.NET Core inyectará automáticamente los objetos de Couchbase cuando queramos.

Modelado de datos

Antes de escribir más código, pensemos en el modelo de datos. Va a ser un modelo muy simple: sólo el nombre de un elemento para la lista de deseos.

En una base de datos de documentos NoSQL, cada dato tiene una clave y un valor JSON. La clave puede ser simplemente un GUID para nuestros propósitos (también puede hacer que sea una clave más significativa si lo desea). Cada elemento de la lista de deseos tiene un "nombre", por lo que habrá un nombre campo.

Crearé una clase C# para representar un elemento:

Un modelo realmente simple, pero como Couchbase no requiere un esquema predefinido, añadir más campos puede ser tan fácil como añadirlos aquí mismo en la clase C#.

Vamos a "cebar" la base de datos con un par de elementos de la Wishlist.

Navega a la colección wishlist en Couchbase Capella y añade un par de documentos.

El primer documento tendrá una clave "3ca6e87e-c3a6-4637-989d-33cbca5002b5", y le daré el nombre de "Camiseta Skyline Chili“.

El segundo documento tendrá una clave "31c9cc33-8dfe-440c-bd1b-bb038939d2e0", le daré el nombre de "Camiseta Joey Votto“.

Viewing Couchbase documents added to bucket

Puede añadir otros documentos si lo desea, pero con el tiempo crearemos una aplicación en la que los documentos se añadan/modifiquen a través de la aplicación ASP.NET Core.

Controlador para acciones CRUD NoSQL

A continuación, cree un controlador ASP.NET para mis operaciones CRUD. Yo lo llamo GiftsController.

En el constructor, especifique un IBucketProvider parámetro. Se trata de un objeto que se puede utilizar para obtener un Bucket de Couchbase DependencyInjection módulo. Lo utilizaré para obtener un Cubo para el objeto demo cubo.

Puedes ejecutar la aplicación en este punto, sólo para verificar que la conexión funciona. Todavía no habrá ningún endpoint (excepto el Previsión meteorológica ejemplo que Microsoft puso como ejemplo).

¿Y ahora qué?

Ahora tenemos un proyecto ASP.NET Core, conectado a Couchbase Capella. En la próxima entrada del blog, vamos a entrar en la creación de los puntos finales CRUD reales.

Mientras tanto, puedes:

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Dejar una respuesta