Démarrage rapide : Bibliothèque Azure Cosmos DB pour NoSQL pour .NET
Prise en main de la bibliothèque cliente Azure Cosmos DB pour NoSQL pour .NET afin d’interroger des données dans vos conteneurs et d’effectuer des opérations courantes sur des éléments individuels. Suivez ces étapes pour déployer une solution minimale dans votre environnement à l’aide de l’interface Azure Developer CLI.
Documentation de référence sur l’API | Code source de la bibliothèque | Package (NuGet) | Azure Developer CLI
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Compte GitHub
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Azure Developer CLI
- Docker Desktop
Configuration
Déployez le conteneur de développement de ce projet sur votre environnement. Utilisez ensuite l’interface Azure Developer CLI (azd
) pour créer un compte Azure Cosmos DB for NoSQL, et déployer un exemple d’application conteneurisé. L’exemple d’application utilise la bibliothèque de client pour gérer, créer, lire et interroger des exemples de données.
Important
Les comptes GitHub incluent un droit d’utilisation relatif au stockage et aux heures cœur gratuites. Pour plus d’informations, consultez Stockage et heures cœur inclus pour les comptes GitHub.
Ouvrez un terminal dans le répertoire racine du projet.
Authentifiez-vous auprès de l’interface Azure Developer CLI en utilisant
azd auth login
. Suivez les étapes spécifiées par l’outil pour vous authentifier auprès de l’interface CLI à l’aide de vos informations d’identification Azure préférées.azd auth login
Utilisez
azd init
pour initialiser le projet.azd init --template cosmos-db-nosql-dotnet-quickstart
Remarque
Ce guide de démarrage rapide utilise le référentiel GitHub du modèle azure-samples/cosmos-db-nosql-dotnet-quickstart. L’interface de programmation Azure Developer CLI clonera automatiquement ce projet sur votre machine si celui-ci n’est pas encore présent.
Lors de l’initialisation, configurez un nom d’environnement unique.
Conseil
Le nom de l’environnement sera également utilisé comme nom du groupe de ressources cible. Pour ce guide de démarrage rapide, utilisez
msdocs-cosmos-db
.Déployez le compte Azure Cosmos DB en utilisant
azd up
. Les modèles Bicep déploient également un exemple d’application web.azd up
Pendant le processus d’approvisionnement, sélectionnez votre abonnement et l’emplacement souhaité. Attendez la fin du processus de provisionnement. Le processus peut prendre environ cinq minutes.
Une fois le provisionnement de vos ressources Azure effectué, une URL vers l’application web en cours d’exécution est incluse dans la sortie.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Utilisez l’URL dans la console pour accéder à votre application web dans le navigateur. Observez la sortie de l’application en cours d’exécution.
Installer la bibliothèque de client
La bibliothèque cliente est disponible via NuGet, en tant que package Microsoft.Azure.Cosmos
.
Ouvrez un terminal et accédez au dossier
/src/web
.cd ./src/web
S’il n’est pas déjà installé, installez le package
Microsoft.Azure.Cosmos
à l’aide dedotnet add package
.dotnet add package Microsoft.Azure.Cosmos --version 3.*
Installez également le package
Azure.Identity
s’il n’est pas déjà installé.dotnet add package Azure.Identity --version 1.12.*
Ouvrez et examinez le fichier src/web/Cosmos.Samples.NoSQL.Quickstart.Web.csproj pour vérifier que les entrées
Microsoft.Azure.Cosmos
etAzure.Identity
existent.
Modèle objet
Nom | Description |
---|---|
CosmosClient | Il s’agit de la classe cliente principale utilisée pour gérer les métadonnées ou les bases de données à l’échelle du compte. |
Database | Cette classe représente une base de données dans le compte. |
Container | Cette classe est principalement utilisée pour effectuer des opérations de lecture, de mise à jour et de suppression sur le conteneur ou les éléments stockés dans le conteneur. |
PartitionKey | Cette classe représente une clé de partition logique. Cette classe est nécessaire pour de nombreuses opérations et requêtes courantes. |
Exemples de code
- Authentifier le client
- Obtenir une base de données
- Obtenir un conteneur
- Créer un élément
- Obtenir un élément
- Éléments de requête
L’exemple de code du modèle utilise une base de données nommée cosmicworks
et un conteneur nommé products
. Le conteneur products
contient des détails tels que le nom, la catégorie, la quantité, un identificateur unique et un indicateur de vente pour chaque produit. Le conteneur utilise la propriété /category
en tant que clé de partition logique.
Authentifier le client
Les requêtes d’application vers les Services Azure doivent être autorisées. Utilisez le type DefaultAzureCredential
en tant que méthode privilégiée pour implémenter une connexion sans mot de passe entre vos applications et Azure Cosmos DB for NoSQL. DefaultAzureCredential
prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution.
Important
Vous pouvez également autoriser directement les requêtes adressées aux services Azure à l’aide de mots de passe, de chaînes de connexion ou d’autres informations d’identification. Toutefois, cette approche doit être utilisée avec prudence. Les développeurs doivent être vigilants pour ne jamais exposer les secrets dans un emplacement non sécurisé. Toute personne ayant accès au mot de passe ou à la clé secrète peut s’authentifier auprès du service de base de données. DefaultAzureCredential
offre des avantages de gestion et de sécurité améliorés sur la clé de compte pour autoriser l’authentification sans mot de passe sans risque de stocker des clés.
Cet exemple crée une instance de la classe CosmosClient
et s’authentifie à l’aide d’une instance DefaultAzureCredential
.
DefaultAzureCredential credential = new();
CosmosClient client = new(
accountEndpoint: "<azure-cosmos-db-nosql-account-endpoint>",
tokenCredential: new DefaultAzureCredential()
);
Obtenir une base de données
Utilisez client.GetDatabase
pour récupérer la base de données existante nommée cosmicworks
.
Database database = client.GetDatabase("cosmicworks");
Obtenir un conteneur
Récupérez le conteneur products
existant à l’aide de database.GetContainer
.
Container container = database.GetContainer("products");
Créer un élément
Générez un type d’enregistrement C# avec tous les membres que vous souhaitez sérialiser dans JSON. Dans cet exemple, le type a un identificateur unique et des champs pour la catégorie, le nom, la quantité, le prix et la vente.
public record Product(
string id,
string category,
string name,
int quantity,
decimal price,
bool clearance
);
Créez un élément dans le conteneur à l’aide de container.UpsertItem
. Cette méthode fait un « upsert » de l’élément en le remplaçant de manière effective s’il existe déjà.
Product item = new(
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
category: "gear-surf-surfboards",
name: "Yamba Surfboard",
quantity: 12,
price: 850.00m,
clearance: false
);
ItemResponse<Product> response = await container.UpsertItemAsync<Product>(
item: item,
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Lire un élément
Effectuez une opération de lecture de point à l’aide des champs d’identificateur unique (id
) et de clé de partition. Utilisez container.ReadItem
pour récupérer efficacement l’élément spécifique.
ItemResponse<Product> response = await container.ReadItemAsync<Product>(
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Éléments de requête
Effectuez une requête sur plusieurs éléments d’un conteneur à l’aide de container.GetItemQueryIterator
. Recherchez tous les éléments d’une catégorie spécifiée à l’aide de cette requête paramétrable :
SELECT * FROM products p WHERE p.category = @category
string query = "SELECT * FROM products p WHERE p.category = @category"
var query = new QueryDefinition(query)
.WithParameter("@category", "gear-surf-surfboards");
using FeedIterator<Product> feed = container.GetItemQueryIterator<Product>(
queryDefinition: query
);
Analysez les résultats paginés de la requête en boucle dans chaque page de résultats à l’aide de feed.ReadNextAsync
. Utilisez feed.HasMoreResults
pour déterminer s’il existe des résultats laissés au début de chaque boucle.
List<Product> items = new();
while (feed.HasMoreResults)
{
FeedResponse<Product> response = await feed.ReadNextAsync();
foreach (Product item in response)
{
items.Add(item);
}
}
Nettoyer les ressources
Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.
azd down
Dans GitHub Codespaces, supprimez l’espace de code en cours d’exécution pour optimiser vos droits de stockage et de base.