Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Inclut : intégration d’hébergement —&—
Client
MongoDB est une base de données NoSQL qui offre des performances élevées, une haute disponibilité et une scalabilité facile. L’intégration
Intégration de l’hébergement
Le serveur MongoDB hébergeant les modèles d’intégration du serveur comme type MongoDBServerResource et la base de données comme type MongoDBDatabaseResource. Pour accéder à ces types et API, ajoutez le package NuGet
dotnet add package Aspire.Hosting.MongoDB
Pour plus d’informations, consultez dotnet add package ou Manage package dependencies in .NET applications.
Ajouter MongoDB ressource de serveur et ressource de base de données
Dans votre projet hôte d’application, appelez AddMongoDB pour ajouter et retourner un générateur de ressources de serveur MongoDB. Chaînez un appel au générateur de ressources retourné pour AddDatabase, pour ajouter une ressource de base de données MongoDB.
var builder = DistributedApplication.CreateBuilder(args);
var mongo = builder.AddMongoDB("mongo")
.WithLifetime(ContainerLifetime.Persistent);
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Remarque
Le MongoDB conteneur peut être lent à démarrer. Il est donc préférable d’utiliser une durée de vie persistante pour éviter les redémarrages inutiles. Pour plus d’informations, consultez La durée de vie des ressources conteneur.
Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image docker.io/library/mongo
, il crée une instance de MongoDB sur votre ordinateur local. Une référence à votre générateur de ressources de serveur MongoDB (la variable mongo
) est utilisée pour ajouter une base de données. La base de données est nommée mongodb
, puis ajoutée au ExampleProject
. La ressource de serveur MongoDB inclut les informations d’identification par défaut :
-
MONGO_INITDB_ROOT_USERNAME
: valeur deadmin
. -
MONGO_INITDB_ROOT_PASSWORD
:password
aléatoire générée à l’aide de la méthode CreateDefaultPasswordParameter.
Lorsque l’hôte de l’application s’exécute, le mot de passe est stocké dans le magasin de secrets de l’hôte d’application. Elle est ajoutée à la section Parameters
, par exemple :
{
"Parameters:mongo-password": "<THE_GENERATED_PASSWORD>"
}
Le nom du paramètre est mongo-password
, mais il suffit de mettre en forme le nom de la ressource avec un suffixe -password
. Pour plus d’informations, consultez Stockage sécurisé des secrets d’application dans le développement et ASP.NET CoreAjouter MongoDB une ressource de serveur avec des paramètres.
La méthode WithReference configure une connexion dans le ExampleProject
nommé mongodb
et l'WaitFor indique à l’hôte de l’application de ne pas démarrer le service dépendant tant que la ressource mongodb
n’est pas prête.
Pourboire
Si vous préférez vous connecter à un serveur MongoDB existant, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.
Ajouter MongoDB ressource de serveur avec un volume de données
Pour ajouter un volume de données à la ressource du serveur MongoDB, appelez la méthode WithDataVolume sur la ressource de serveur MongoDB :
var builder = DistributedApplication.CreateBuilder(args);
var mongo = builder.AddMongoDB("mongo")
.WithDataVolume();
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Le volume de données est utilisé pour conserver les données du serveur MongoDB en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin d’accès /data/db
dans le conteneur du serveur MongoDB et lorsqu’un paramètre name
n’est pas fourni, le nom est généré au hasard. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison, consultez Docker la documentation : Volumes.
Avertissement
Le mot de passe est stocké dans le volume de données. Lors de l’utilisation d’un volume de données et si le mot de passe change, il ne fonctionnera pas tant que vous ne supprimez pas le volume.
Important
Certaines des intégrations de base de données, y compris l’intégration .NET AspireMongoDB, ne peuvent pas réussir à utiliser les volumes de données après le déploiement vers Azure Container Apps (ACA). Cela est dû au fait que L’ACA utilise Server Le bloc de messages (SMB) pour connecter des conteneurs à des volumes de données, et certains systèmes ne peuvent pas utiliser cette connexion. Dans le Aspire tableau de bord, une base de données affectée par ce problème a un état d’activation ou d’échec de l’activation , mais elle n’est jamais répertoriée comme en cours d’exécution.
Vous pouvez résoudre le problème en déployant sur un cluster Kubernetes, tel qu'AzureKubernetes Services (AKS). Pour plus d'informations, consultez les déploiements .NET.NET Aspire.
Ajoutez la ressource serveur MongoDB avec un montage de liaison de fichiers.
Pour ajouter un montage de liaison de données à la ressource de serveur MongoDB, appelez la méthode WithDataBindMount :
var builder = DistributedApplication.CreateBuilder(args);
var mongo = builder.AddMongoDB("mongo")
.WithDataBindMount(@"C:\MongoDB\Data");
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Important
Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , qui offrent de meilleures performances, une meilleure portabilité et une plus grande sécurité, ce qui les rend plus adaptés aux environnements de production. Toutefois, les montages de liens permettent un accès direct et la modification des fichiers sur le système hôte, ce qui est idéal pour le développement et les tests nécessitant des modifications en temps réel.
Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données du serveur MongoDB entre les redémarrages de conteneur. Le point de montage de liaison de données est monté au chemin d'accès C:\MongoDB\Data
sur Windows (ou /MongoDB/Data
sur Unix) sur la machine hôte, dans le conteneur du serveur MongoDB. Pour plus d’informations sur les montages de liaison de données, consultez Docker la documentation : Montages de liaison.
Ajoutez la ressource serveur MongoDB avec montage de liaison pour les données d'initialisation
Pour ajouter un montage de fichiers et de données d’initialisation à la ressource de serveur MongoDB, appelez la méthode WithInitBindMount :
var builder = DistributedApplication.CreateBuilder(args);
var mongo = builder.AddMongoDB("mongo")
.WithInitBindMount(@"C:\MongoDB\Init");
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Le montage de données d'initialisation est utilisé pour initialiser le serveur MongoDB avec des données. Le montage de liaison de données d'initialisation est monté au chemin C:\MongoDB\Init
sous Windows (ou /MongoDB/Init
sur Unix) sur la machine hôte dans le conteneur serveur MongoDB et se rapporte au chemin /docker-entrypoint-initdb.d
dans le conteneur serveur MongoDB.
MongoDB exécute les scripts trouvés dans ce dossier, ce qui est utile pour charger des données dans la base de données.
Ajouter MongoDB ressource de serveur avec des paramètres
Lorsque vous souhaitez fournir explicitement le mot de passe utilisé par l’image conteneur, vous pouvez fournir ces informations d’identification en tant que paramètres. Prenons l’exemple de remplacement suivant :
var builder = DistributedApplication.CreateBuilder(args);
var username = builder.AddParameter("username");
var password = builder.AddParameter("password", secret: true);
var mongo = builder.AddMongoDB("mongo", username, password);
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Pour plus d’informations sur la fourniture de paramètres, consultez Paramètres externes.
Ajouter la ressource Express MongoDB
MongoDB Express est une interface utilisateur d’administrateur web MongoDB . Pour ajouter une MongoDB ressource Express qui correspond à l’imagedocker.io/library/mongo-express
conteneur, appelez la WithMongoExpress méthode sur la ressource serveur MongoDB :
var builder = DistributedApplication.CreateBuilder(args);
var mongo = builder.AddMongoDB("mongo")
.WithMongoExpress();
var mongodb = mongo.AddDatabase("mongodb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mongodb)
.WaitFor(mongodb);
// After adding all resources, run the app...
Pourboire
Pour configurer le port hôte de la chaîne MongoExpressContainerResource un appel à l’API WithHostPort et fournir le numéro de port souhaité.
Le code précédent ajoute une ressource Express MongoDB configurée pour se connecter à la ressource de serveur MongoDB. Les informations d’identification par défaut sont les suivantes :
-
ME_CONFIG_MONGODB_SERVER
: nom attribué auMongoDBServerResource
parent , dans ce cas, il seraitmongo
. -
ME_CONFIG_BASICAUTH
: valeur defalse
. -
ME_CONFIG_MONGODB_PORT
: Affecté depuis le port cible du point de terminaison principal duMongoDBServerResource
parent. -
ME_CONFIG_MONGODB_ADMINUSERNAME
: le même nom d’utilisateur que celui configuré dans leMongoDBServerResource
parent . -
ME_CONFIG_MONGODB_ADMINPASSWORD
: le même mot de passe que celui configuré dans leMongoDBServerResource
parent .
En outre, l’API WithMongoExpress
expose un paramètre configureContainer
facultatif de type Action<IResourceBuilder<MongoExpressContainerResource>>
que vous utilisez pour configurer la ressource de conteneur express MongoDB.
Vérifications de l'intégrité de l'hébergement intégré
L’intégration d’hébergement MongoDB ajoute automatiquement un contrôle d’intégrité pour la ressource de serveur MongoDB. La vérification d’intégrité vérifie que la ressource de serveur MongoDB est en cours d’exécution et qu’une connexion peut être établie à celui-ci.
L’intégration de l’hébergement s’appuie sur le 📦 package NuGet AspNetCore.HealthChecks.MongoDb .
intégration de Client
Pour commencer à utiliser l’intégration du client .NET AspireMongoDB, installez le package NuGet .📦AspireMongoDB.Driver dans le projet qui consomme le client, c’est-à-dire le projet pour l’application qui utilise le client MongoDB. L’intégration MongoDB du client inscrit une instance IMongoClient que vous pouvez utiliser pour interagir avec la ressource de MongoDB serveur. Si votre hôte d’application ajoute des MongoDB ressources de base de données, l’instance IMongoDatabase est également inscrite.
dotnet add package Aspire.MongoDB.Driver
Important
Le package NuGet Aspire.MongoDB.Driver
dépend du package NuGet MongoDB.Driver
. Avec la version 3.0.0 de MongoDB.Driver
, une modification de rupture binaire a été introduite. Pour résoudre ce problème, un nouveau package d’intégration client, Aspire.MongoDB.Driver.v3
, a été créé. Le package d’origine Aspire.MongoDB.Driver
continue de référencer MongoDB.Driver
la version 2.30.0, ce qui garantit la compatibilité avec les versions précédentes de l’intégration du RabbitMQ client. Le nouveau Aspire.MongoDB.Driver.v3
package fait référence à MongoDB.Driver
la version 3.0.0. Dans une version ultérieure de .NET.NET Aspire, le Aspire.MongoDB.Driver
sera mis à jour vers la version 3.x
et le package Aspire.MongoDB.Driver.v3
sera déconseillé. Pour plus d’informations, consultez Mettre à niveau vers la version 3.0.
Ajouter MongoDB client
Dans le fichier Program.cs de votre projet client, appelez la méthode d'extension AddMongoDBClient sur n'importe quel IHostApplicationBuilder afin d'enregistrer un IMongoClient
pour son utilisation via le conteneur d'injection de dépendances. La méthode prend un paramètre de nom de connexion.
builder.AddMongoDBClient(connectionName: "mongodb");
Pourboire
Le paramètre connectionName
doit correspondre au nom utilisé lors de l’ajout de la ressource serveur MongoDB (ou de la ressource de base de données fournie) dans le projet hôte de l’application. En d’autres termes, lorsque vous appelez AddDatabase
et fournissez un nom de mongodb
ce même nom doit être utilisé lors de l’appel de AddMongoDBClient
. Pour plus d’informations, consultez Ajouter MongoDB une ressource de serveur et une ressource de base de données.
Vous pouvez ensuite récupérer l’instance IMongoClient
à l’aide de l’injection de dépendances. Par exemple, pour récupérer le client à partir d’un exemple de service :
public class ExampleService(IMongoClient client)
{
// Use client...
}
La IMongoClient
est utilisée pour interagir avec la ressource de serveur MongoDB. Il peut être utilisé pour créer des bases de données qui ne sont pas déjà connues du projet hôte d’application. Lorsque vous définissez une ressource de base de données MongoDB dans votre hôte d’application, vous pouvez plutôt exiger que le conteneur d’injection de dépendances fournit une instance IMongoDatabase
. Pour plus d’informations sur l’injection de dépendances, consultez .NET l’injection de dépendances.
Ajouter un client MongoDB avec clé
Il peut arriver que vous souhaitiez inscrire plusieurs instances de IMongoDatabase
avec différents noms de connexion. Pour inscrire les clients spécifiques MongoDB, appelez la méthode AddKeyedMongoDBClient :
builder.AddKeyedMongoDBClient(name: "mainDb");
builder.AddKeyedMongoDBClient(name: "loggingDb");
Important
Lorsque vous utilisez des services à clé, il est prévu que votre ressource MongoDB a configuré deux bases de données nommées, une pour le mainDb
et l’autre pour le loggingDb
.
Vous pouvez ensuite récupérer les instances IMongoDatabase
à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :
public class ExampleService(
[FromKeyedServices("mainDb")] IMongoDatabase mainDatabase,
[FromKeyedServices("loggingDb")] IMongoDatabase loggingDatabase)
{
// Use databases...
}
Pour plus d’informations sur les services à clé, consultez .NET l’injection de dépendances : services à clé.
Paramétrage
L’intégration de base de données .NET AspireMongoDB fournit plusieurs approches et options de configuration pour répondre aux exigences et conventions de votre projet.
Utiliser une chaîne de connexion
Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings
, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de builder.AddMongoDBClient()
:
builder.AddMongoDBClient("mongo");
La chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings
. Prenons l'exemple suivant de la configuration MongoDBJSON :
{
"ConnectionStrings": {
"mongo": "mongodb://server:port/test",
}
}
Considérez l’exemple suivant de configuration MongoDB Atlas JSON :
{
"ConnectionStrings": {
"mongo": "mongodb+srv://username:password@server.mongodb.net/",
}
}
Pour plus d’informations sur la mise en forme de cette chaîne de connexion, consultez MongoDBla documentation ConnectionString.
Utiliser des fournisseurs de configuration
L’intégration .NET AspireMongoDB prend en charge Microsoft.Extensions.Configuration. Il charge le MongoDBSettings à partir de la configuration à l’aide de la clé Aspire:MongoDB:Driver
. L’extrait de code suivant est un exemple de fichier appsettings.json qui configure certaines des options :
{
"Aspire": {
"MongoDB": {
"Driver": {
"ConnectionString": "mongodb://server:port/test",
"DisableHealthChecks": false,
"HealthCheckTimeout": 10000,
"DisableTracing": false
},
}
}
Utiliser des configurations intégrées
Vous pouvez également passer le délégué Action<MongoDBSettings>
pour configurer certaines ou toutes les options directement :
builder.AddMongoDBClient("mongodb",
static settings => settings.ConnectionString = "mongodb://server:port/test");
Options de configuration
Voici les options configurables avec les valeurs par défaut correspondantes :
Nom | Descriptif |
---|---|
ConnectionString |
Chaîne de connexion de la base de données MongoDB à laquelle se connecter. |
DisableHealthChecks |
Valeur booléenne qui indique si la vérification d’intégrité de la base de données est désactivée ou non. |
HealthCheckTimeout |
Valeur int? qui indique le délai d’expiration du contrôle d’intégrité MongoDB en millisecondes. |
DisableTracing |
Valeur booléenne qui indique si le suivi OpenTelemetry est désactivé ou non. |
Client contrôles de santé de l’intégration
Par défaut, les intégrations de clients .NET.NET Aspire ont les contrôles de santé activés pour tous les services. De même, de nombreuses intégrations d'hébergement .NET.NET Aspire activent également les endpoints de vérification de santé. Pour plus d’informations, consultez :
Par défaut, l’intégration du client .NET AspireMongoDB gère les scénarios suivants :
- Ajoute une vérification d'intégrité lorsqu'elle est activée qui vérifie qu'une connexion peut être établie et que des commandes peuvent être effectuées sur la base de données MongoDB dans un certain délai.
- S’intègre au point de terminaison HTTP
/health
, qui spécifie que tous les contrôles de santé enregistrés doivent être validés pour que l’application soit considérée comme prête à accepter le trafic.
Observabilité et télémétrie
.NET .NET Aspire les intégrations configurent automatiquement les configurations de journalisation, de suivi et de métriques, parfois appelées piliers de l’observabilité. Pour plus d’informations sur l’observabilité et la télémétrie d’intégration, consultez .NET.NET Aspire la vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration .
Exploitation forestière
L’intégration de base de données .NET AspireMongoDB utilise la journalisation standard de .NET, et dans les catégories suivantes, vous trouverez les entrées de journal :
-
MongoDB[.*]
: toutes les entrées de journal de l’espace de noms MongoDB.
Traçage
L’intégration de base de données .NET AspireMongoDB émet les activités de traçage suivantes à l’aide de OpenTelemetry:
MongoDB.Driver.Core.Extensions.DiagnosticSources
Métriques
L’intégration de base de données .NET AspireMongoDB n’expose actuellement aucune métrique OpenTelemetry.