CockroachDB avec DotNet et Dapper

[English version available here]

Dans l'écosystème dotnet, il est courant d'utiliser Entity Framework. Mais vous pouvez également utiliser Dapper pour gérer l'accès à votre base de données.


Dapper est un mappeur d'objets simple et facile à utiliser. Pour ce blog, je vais montrer comment utiliser Dapper pour communiquer avec CockroachDB.

Préparation de l'environnement

Si vous êtes ici, je suppose que vous avez déjà installé dotnet core. Si ce n'est pas le cas, vous pouvez l'obtenir à l'adresse suivante : https://dotnet.microsoft.com/en-us/download

Une fois installé, il suffit de lancer la commande suivante

Après la création, ouvrez le dossier du projet dans votre IDE. Supprimez les fichiers WeatherForecastController.cs et WeatherForecast.cs.


Je recommande d'utiliser CockroachDB Serverless, car il va démarrer votre cluster rapidement. Vous pouvez également utiliser n'importe quel déploiement.


Une fois que vous avez toutes les informations de Cockroach Cloud, vous pouvez modifier le fichier appsettings.json en ajoutant la chaîne de connexion :

Vous aurez également besoin de Dapper et de Npgsql. Vous pouvez les ajouter en utilisant ces commandes :

API simple de gestion des employé(e)s

Pour commencer, ajoutons un dossier nommé Models et créons un fichier Employee.cs dans ce dossier. Le modèle ressemblera à ceci

Nous pouvons maintenant créer un dossier Services et y ajouter ces fichiers :

  • IDbService.cs
  • ICRUDService.cs
  • DbService.cs
  • EmployeeService.cs

Le service IDb est assez simple puisque nous ne déclarons que les méthodes que nous voulons fournir pour accéder à la base de données :

Le fichier ICRUDService.cs est également simple, car nous ne déclarons que des opérations CRUD :

Implémentons les interfaces

Le DbService devrait ressembler à ceci :

Nous demandons simplement à la base de données d'exécuter la commande reçue et de nous renvoyer le résultat.

N'oubliez pas d'ajouter les dépendances Dapper et Npgsql.

Le fichier EmployeeService.cs contient toutes les requêtes SQL que nous voulons transmettre à la base de données.

Il s'agit d'un extrait du fichier, mais vous voyez l'idée.

Controller

Comme vous pouvez vous en douter, le contrôleur de cet exemple se contente de passer des appels.

Une fois que tout est en place, n'oubliez pas de couple le tout dans le fichier program.cs

Tester l'API

Je voulais vérifier le comportement du binaire. Pour ce faire, vous devez publier votre application et exécuter le binaire.

Voici à quoi cela ressemble :

N'oubliez pas d'ajouter l'autorisation d'exécution si nécessaire (chmod +x) et vous pourrez alors exécuter votre API.

Conclusion

Pour m'assurer que tout fonctionne correctement, j'ai effectué quelques tests de charge. Ci-dessous, une capture d'écran des résultats.

Comme vous pouvez le voir, cela fonctionne parfaitement. Vous pouvez également exécuter des appels différents pour tester la concurrence sur les différents points de terminaison que vous avez créés. Lors de mes tests, le QPS obtenu était toujours le même quelle que soit la combinaison de POST, PUT, GET et DELETE que j'essayais.

Si vous voulez le tester par vous-même, vous pouvez consulter ce repo https://github.com/Hytm/CockroachDB-Dapper-Example.