Aller au contenu principal

Configuration

Un client Clustron Zaris est configuré par une seule chaîne de connexion. Vous conservez cette chaîne dans la configuration .NET standard — la section ConnectionStrings de appsettings.json — et vous la sélectionnez par son nom, exactement comme vous le feriez pour une chaîne de connexion SQL Server ou toute autre base de données. Il n'y a pas de paramètre de mode distinct ni de liste d'amorçage à maintenir ; la chaîne porte tout.

Utilisez la configuration afin de pouvoir gérer les paramètres du store de manière externe plutôt que de les coder en dur. Par exemple, vous pouvez exécuter un store in-process pendant le développement et un cluster distant en production en livrant un fichier appsettings différent avec la même clé.

Configuration de base​

Définissez vos stores sous la section standard ConnectionStrings. Chaque store est une entrée dont la clé est un nom que vous choisissez et dont la valeur est une chaîne de connexion Zaris. L'exemple ci-dessous définit un store nommé default qui se connecte à un cluster distant :

{
"ConnectionStrings": {
"default": "zaris://localhost:7861/default"
}
}

Anatomie d'une chaîne de connexion​

Chaque store est décrit par une chaîne de connexion qui porte le transport, les hôtes, le nom du store et toutes les options de sécurité ou de timeout.

Schéma et hôtes​

Le schéma sélectionne le transport : zaris:// pour une connexion en clair ou zariss:// pour TLS. Viennent ensuite un ou plusieurs amorces host:port séparées par des virgules :

zaris://10.0.0.11:7861,10.0.0.12:7861/default

Vous n'avez besoin que d'une seule amorce valide. Le client l'utilise pour découvrir le reste des nœuds du cluster. Listez-en plusieurs pour la résilience et le basculement, au cas où la première serait indisponible. Chaque hôte est un point de terminaison de la forme <Machine/IP>:<ClientPort>, où le port est le port client défini avec -BaseClientPort lors de la création du store.

Pour un store in-process (embarqué), utilisez l'hôte réservé inproc et aucun port — zaris://inproc/default. Un store in-process s'exécute en mémoire à l'intérieur de votre processus et ne peut pas utiliser TLS.

Nom du store et options​

Le chemin après les hôtes est le nom du store (requis) ; il doit être égal à l'id du cluster. Des paramètres de requête optionnels portent la sécurité et les timeouts : ?token=env:VAR (ou file:/path, ou une valeur littérale), ?ca=/path/ca.pem, ?tlsInsecure=true (dev uniquement), ?connectTimeoutMs=5000 et ?requestTimeoutMs=5000.

Enregistrer la configuration​

Enregistrez chaque store depuis la configuration avec AddClustronZarisFromConnectionStrings. Cela lit la section standard ConnectionStrings et enregistre chaque entrée Zaris que vous avez définie ci-dessus. Les entrées non-Zaris, comme une chaîne SQL Server, sont ignorées.

using Clustron.Zaris.Client.DependencyInjection;

services.AddClustronZarisFromConnectionStrings(configuration);

Pour n'enregistrer qu'une seule entrée nommée à la place, passez la configuration et la clé :

services.AddClustronZaris(configuration, "default");

Obtenir un client​

Résolvez un client par le nom que vous avez défini dans la configuration. Ceci renvoie un client pour le store default :

var client = await services
.GetRequiredService<IZarisClientProvider>()
.GetAsync("default");

Définir plusieurs stores​

Vous pouvez définir un nombre quelconque de stores sous ConnectionStrings, une entrée par clé — certains distants, d'autres in-process. Cet exemple définit un store orders distant et un store local in-process. Résolvez chacun par son nom avec GetAsync.

{
"ConnectionStrings": {
"orders": "zaris://orders-node:7861/orders",
"local": "zaris://inproc/local"
}
}
services.AddClustronZarisFromConnectionStrings(configuration); // registers "orders" and "local"

var ordersClient = await provider.GetAsync("orders");
var localClient = await provider.GetAsync("local");

La configuration conserve les paramètres du store en un seul endroit, vous permet de basculer entre in-process et distant en modifiant une chaîne, prend en charge plusieurs stores et fonctionne avec l'injection de dépendances .NET standard.

Étapes suivantes​