Aplicación de Orleans

Una aplicación típica de Orleans consta de un clúster de procesos de servidor (silos) donde residen granos y un conjunto de procesos cliente, normalmente servidores web, que reciben solicitudes externas, las convierten en llamadas a métodos de grano y devuelven resultados. Por lo tanto, lo primero que hay que hacer para ejecutar una aplicación de Orleans es iniciar un clúster de silos. Con fines de prueba, un clúster puede constar de un único silo. Para una implementación de producción confiable, conviene tener más de un silo en un clúster para disponer de mayor tolerancia a errores y escala.

Una vez que el clúster se está ejecutando, se puede iniciar uno o varios procesos de cliente que se conectan al clúster y pueden enviar solicitudes a los granos. Los clientes se conectan a un punto de conexión TCP especial en los silos: la puerta de enlace. De forma predeterminada, cada silo de un clúster tiene habilitada una puerta de enlace de cliente. Por lo tanto, los clientes pueden conectarse a todos los silos en paralelo para mejorar el rendimiento y la resistencia.

Configuración e inicio de un silo

Un silo se configura mediante programación con un objeto ClusterConfiguration. Se puede crear una instancia de él y rellenarse directamente, cargar la configuración desde un archivo o crear con varios métodos auxiliares disponibles para diferentes entornos de implementación. Para las pruebas locales, la manera más fácil consiste en usar el método auxiliar LocalhostPrimarySilo. Después, el objeto de configuración se pasa a una nueva instancia de la clase SiloHost, que se puede inicializar a continuación.

Puede crear un proyecto de aplicación de consola vacío con .NET Framework 4.6.1 o superior como destino para hospedar un silo. Agregue el metapaquete NuGet Microsoft.Orleans.Server al proyecto.

Install-Package Microsoft.Orleans.Server

Este es un ejemplo de cómo se puede iniciar un silo local:

var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();

Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();

// shut the silo down after we are done.
silo.ShutdownOrleansSilo();

Configuración y conexión a un cliente

El cliente para conectarse a un clúster de silos y enviar solicitudes a granos se configura mediante programación con un objeto ClientConfiguration y ClientBuilder. Se puede crear una instancia del objeto ClientConfiguration y rellenarse directamente, cargar la configuración desde un archivo o crear con varios métodos auxiliares disponibles para diferentes entornos de implementación. Para las pruebas locales, la manera más fácil consiste en usar el método auxiliar LocalhostSilo. Después, el objeto de configuración se pasa a una nueva instancia de la clase ClientBuilder.

ClientBuilder expone más métodos para configurar características de cliente adicionales. Después, se llama al método ClientBuilder.Build() del objeto ClientBuilder para obtener una implementación de la interfaz IClusterClient. Por último, se llama al método IClusterClient.Connect() en el objeto devuelto para conectarse al clúster.

Puede crear un proyecto de aplicación de consola vacío con .NET Framework 4.6.1 o posterior como destino para ejecutar un cliente o reutilizar el proyecto de aplicación de consola que creó para hospedar un silo. Agregue el metapaquete NuGet Microsoft.Orleans.Client al proyecto.

Install-Package Microsoft.Orleans.Client

Este es un ejemplo de cómo se puede conectar un cliente a un silo local:

var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();

Configuraciones de producción

Los ejemplos de configuración que usamos aquí son para probar silos y clientes que se ejecutan en el mismo equipo que localhost. En producción, los silos y los clientes normalmente se ejecutan en servidores diferentes y se configuran con una de las opciones de configuración de clúster confiables. Encontrará más información al respecto en la guía de configuración y en la descripción de la administración de clústeres.

Pasos siguientes