In-Process betreiben
Der In-Process-Modus führt den Zaris-Store innerhalb Ihres Anwendungsprozesses aus, ohne zu installierende Server und ohne Cluster-Konfiguration. Das ist der schnellste Weg zu einem funktionierenden Store, und er nutzt exakt dieselbe Client-API wie ein Cluster.
Der In-Process-Modus ist keine andere API und kein anderer Codepfad — er ist lediglich eine Connection String. Die Zeichenfolge zaris://inproc/<store> erstellt einen eingebetteten Store, der seine Daten im Arbeitsspeicher hält, solange Ihre Anwendung läuft. Wenn Sie später über mehrere Instanzen hinweg skalieren oder koordinieren müssen, ersetzen Sie diese Zeichenfolge durch eine, die auf einen Cluster zeigt (zaris://host:port/<store>). Sonst ändert sich nichts an Ihrem Code.
Voraussetzungen
Sie benötigen ein .NET-Projekt und das .NET SDK. Für den In-Process-Modus ist keine Zaris-Installation erforderlich.
1. Ein Projekt erstellen
Erstellen Sie ein Konsolenprojekt für das Beispiel. Überspringen Sie diesen Schritt, wenn Sie bereits ein Projekt haben.
dotnet new console -o zaris-demo
cd zaris-demo
2. Das Paket installieren
Fügen Sie Ihrem Projekt das Zaris SDK mit der dotnet-CLI hinzu:
dotnet add package Clustron.Zaris.SDK
3. Die Connection String hinzufügen
Legen Sie die Connection String in appsettings.json im Standardabschnitt ConnectionStrings ab, unter einem von Ihnen gewählten Namen als Schlüssel. Der Wert zaris://inproc/demo wählt einen In-Process-Store namens demo (inproc ist ein reserviertes Host-Token, ähnlich wie localhost):
{
"ConnectionStrings": {
"demo": "zaris://inproc/demo"
}
}
4. Den Store registrieren
Registrieren Sie den Store aus der Konfiguration. AddClustronZaris(configuration, "demo") sucht ConnectionStrings:demo und richtet den Provider ein, der Clients bereitstellt.
using Clustron.Zaris.Client.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection()
.AddClustronZaris(configuration, "demo")
.BuildServiceProvider();
5. Einen Client erhalten
Lösen Sie aus dem Service Provider einen Client für den Store demo auf. Mit diesem Client führen Sie jede Store-Operation aus.
var client = await services
.GetRequiredService<IZarisClientProvider>()
.GetAsync("demo");
6. Einen Wert speichern und lesen
Speichern Sie einen Wert mit PutAsync und lesen Sie ihn dann mit GetAsync zurück. Das Typargument bei GetAsync<string> teilt Zaris mit, wie der Wert deserialisiert werden soll.
await client.PutAsync("hello", "world");
var value = await client.GetAsync<string>("hello");
Console.WriteLine(value.Value);
Ohne Dependency Injection
Wenn Sie keinen DI-Container haben, verbinden Sie sich imperativ mit derselben Connection String. ZarisClient.ConnectAsync ist der einzige Einstiegspunkt; er parst die Zeichenfolge und liefert einen verbundenen Client zurück.
using Clustron.Zaris.Client;
var client = await ZarisClient.ConnectAsync("zaris://inproc/demo");
await client.PutAsync("hello", "world");
var value = await client.GetAsync<string>("hello");
Console.WriteLine(value.Value);
Ein Literal wie dieses ist für ein kurzes Beispiel in Ordnung; in einer echten App sollten Sie ZarisClient.ConnectAsync(configuration.GetConnectionString("demo")!) bevorzugen, damit der Wert aus der Konfiguration stammt.
Vollständiges Beispiel
Die obigen Schritte ergeben zusammen ein einziges Top-Level-Programm. Kopieren Sie es in Program.cs und führen Sie es mit dotnet run aus. Es gibt world aus.
using Clustron.Zaris.Client;
var client = await ZarisClient.ConnectAsync("zaris://inproc/demo");
await client.PutAsync("hello", "world");
var value = await client.GetAsync<string>("hello");
Console.WriteLine(value.Value);
Was Sie gerade getan haben
Sie haben einen funktionierenden Key/Value-Store erstellt, der vollständig innerhalb Ihres Prozesses läuft. Es waren weder Netzwerkaufrufe noch externe Dienste beteiligt, und Sie haben dieselbe Client-API verwendet wie ein Cluster. Da es keinen Netzwerk-Hop gibt, ist der In-Process-Modus der schnellste Weg, den Store zu betreiben.
Zu einem Cluster wechseln
Wenn Ihre Anwendung über mehrere Instanzen hinweg skalieren oder koordinieren muss, richten Sie den Store auf einen laufenden Cluster. Die einzige Änderung ist die Connection String: Ersetzen Sie zaris://inproc/demo durch eine Seed-Adresse, zaris://host:port/demo (oder zariss:// für TLS):
{
"ConnectionStrings": {
"demo": "zaris://localhost:7861/demo"
}
}
Ihr Code aus den Schritten 4 bis 6 bleibt unverändert — dieselbe Registrierung, dasselbe GetAsync, dieselben Operationen. Um den Node zu betreiben, mit dem sich diese Zeichenfolge verbindet, installieren Sie Zaris und erstellen Sie einen Store.