Saltar al contenido principal

Ejecutar en proceso

El modo en proceso ejecuta el almacén de Zaris dentro del proceso de tu aplicación, sin servidores que instalar ni clúster que configurar. Esta es la forma más rápida de obtener un almacén funcional, y usa exactamente la misma API de cliente que un clúster.

El modo en proceso no es una API diferente ni una ruta de código diferente — es simplemente una cadena de conexión. La cadena zaris://inproc/<store> crea un almacén incrustado que mantiene sus datos en memoria mientras tu aplicación se ejecuta. Cuando más tarde necesites escalar o coordinar entre instancias, cambias esa cadena por una que apunte a un clúster (zaris://host:port/<store>). Nada más en tu código cambia.

Requisitos previos​

Necesitas un proyecto .NET y el SDK de .NET. No se requiere ninguna instalación de Zaris para el modo en proceso.

1. Crea un proyecto​

Crea un proyecto de consola para contener el ejemplo. Omite este paso si ya tienes un proyecto.

dotnet new console -o zaris-demo
cd zaris-demo

2. Instala el paquete​

Añade el SDK de Zaris a tu proyecto con la CLI dotnet:

dotnet add package Clustron.Zaris.SDK

3. Añade la cadena de conexión​

Pon la cadena de conexión en appsettings.json bajo la sección estándar ConnectionStrings, con una clave que elijas. El valor zaris://inproc/demo selecciona un almacén en proceso llamado demo (inproc es un token de host reservado, como localhost):

appsettings.json
{
"ConnectionStrings": {
"demo": "zaris://inproc/demo"
}
}

4. Registra el almacén​

Registra el almacén desde la configuración. AddClustronZaris(configuration, "demo") busca ConnectionStrings:demo y conecta el proveedor que reparte clientes.

using Clustron.Zaris.Client.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

var services = new ServiceCollection()
.AddClustronZaris(configuration, "demo")
.BuildServiceProvider();

5. Obtén un cliente​

Resuelve un cliente para el almacén demo desde el proveedor de servicios. Usas este cliente para cada operación del almacén.

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

6. Almacena y lee un valor​

Almacena un valor con PutAsync, luego vuelve a leerlo con GetAsync. El argumento de tipo en GetAsync<string> le dice a Zaris cómo deserializar el valor.

await client.PutAsync("hello", "world");

var value = await client.GetAsync<string>("hello");

Console.WriteLine(value.Value);

Sin inyección de dependencias​

Si no tienes un contenedor de DI, conéctate de forma imperativa con la misma cadena de conexión. ZarisClient.ConnectAsync es el único punto de entrada; analiza la cadena y devuelve un cliente conectado.

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);

Una cadena literal como esta está bien para una muestra rápida; en una aplicación real, prefiere ZarisClient.ConnectAsync(configuration.GetConnectionString("demo")!) para que el valor venga de la configuración.

Ejemplo completo​

Los pasos anteriores se combinan en un único programa de nivel superior. Copia esto en Program.cs y ejecútalo con dotnet run. Imprime world.

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);

Lo que acabas de hacer​

Creaste un almacén clave-valor funcional que se ejecuta por completo dentro de tu proceso. No hubo llamadas de red ni servicios externos involucrados, y usaste la misma API de cliente que usa un clúster. Como no hay salto de red, el modo en proceso es la forma más rápida de ejecutar el almacén.

Pasa a un clúster​

Cuando tu aplicación necesite escalar o coordinar entre múltiples instancias, apunta el almacén a un clúster en ejecución. El único cambio es la cadena de conexión: reemplaza zaris://inproc/demo por una dirección seed, zaris://host:port/demo (o zariss:// para TLS):

appsettings.json
{
"ConnectionStrings": {
"demo": "zaris://localhost:7861/demo"
}
}

Tu código en los pasos 4 al 6 no cambia — el mismo registro, el mismo GetAsync, las mismas operaciones. Para ejecutar el nodo al que esta cadena se conecta, instala Zaris y crea un almacén.

Próximos pasos​