Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Configure un cliente para conectarse a un clúster de silos y enviar solicitudes a granos mediante programación a través de una IHostBuilder y varias clases de opciones complementarias. Al igual que las opciones de silo, las clases de opciones de los clientes siguen el patrón de Options en .NET.
Configure un cliente para conectarse a un clúster de silos y enviar solicitudes a granos mediante programación a través de una ClientBuilder y varias clases de opciones complementarias. Al igual que las opciones de silo, las clases de opciones de los clientes siguen el patrón de Options en .NET.
Sugerencia
Si solo desea iniciar un silo local y un cliente local con fines de desarrollo, consulte Configuración de desarrollo local.
Sugerencia
Si usa .NET Aspire, la configuración del cliente se controla automáticamente. Aspire inyecta ClusterId, ServiceId y los ajustes del proveedor de agrupación en clústeres a través de variables de entorno, por lo que puede utilizar el método UseOrleansClient sin parámetros más sencillo. Consulte
Agregue el paquete NuGet Microsoft.Orleans.Clustering.AzureStorage a su proyecto de cliente.
Hay varios aspectos clave de la configuración del cliente:
- Orleans información de agrupación en clústeres
- Proveedor de agrupación en clústeres
- Elementos de la aplicación
Ejemplo de una configuración de cliente:
El uso de un TokenCredential con un URI de servicio es el enfoque recomendado. Este patrón evita almacenar secretos en la configuración y aprovecha microsoft Entra ID para la autenticación segura.
DefaultAzureCredential proporciona una cadena de credenciales que funciona sin problemas en entornos de desarrollo y producción locales. Durante el desarrollo, usa las credenciales de la CLI de Azure o Visual Studio. En producción en Azure, usa automáticamente la identidad administrada asignada al recurso.
Sugerencia
DefaultAzureCredential funciona sin problemas en el desarrollo y la producción locales. En desarrollo, usa las credenciales de la CLI de Azure o Visual Studio. En producción en Azure, usa automáticamente la identidad administrada del recurso. Para mejorar el rendimiento y la depuración en producción, considere la posibilidad de reemplazarlo por una credencial específica, como ManagedIdentityCredential. Para obtener más información, consulte Guía de uso de DefaultAzureCredential.
using Azure.Identity;
var builder = Host.CreateApplicationBuilder(args);
builder.UseOrleansClient(clientBuilder =>
{
clientBuilder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "my-first-cluster";
options.ServiceId = "MyOrleansService";
})
.UseAzureStorageClustering(options =>
{
options.ConfigureTableServiceClient(
new Uri("https://<your-storage-account>.table.core.windows.net"),
new DefaultAzureCredential());
});
});
using var host = builder.Build();
await host.StartAsync();
public static async Task ConfigureClient(string connectionString)
{
var client = new ClientBuilder()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "my-first-cluster";
options.ServiceId = "MyOrleansService";
})
.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(connectionString))
.ConfigureApplicationParts(
parts => parts.AddApplicationPart(
typeof(IValueGrain).Assembly))
.Build();
await client.Connect();
}
Vamos a desglosar los pasos que se usan en este ejemplo:
Orleans información de agrupación en clústeres
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "orleans-docker";
options.ServiceId = "AspNetSampleApp";
})
Aquí, establecemos dos cosas:
- El ClusterOptions.ClusterId al
"my-first-cluster": se trata de un identificador único para el clúster Orleans. Todos los clientes y silos que usan este identificador pueden comunicarse directamente entre sí. Algunos pueden optar por usar otro ClusterId para cada implementación, por ejemplo. - De ClusterOptions.ServiceId a
"AspNetSampleApp": Es un identificador único para la aplicación, utilizado por algunos proveedores (por ejemplo, proveedores de persistencia). Este identificador debe permanecer estable en todas las implementaciones.
Proveedor de agrupación en clústeres
Sugerencia
DefaultAzureCredential funciona sin problemas en el desarrollo y la producción locales. En desarrollo, usa las credenciales de la CLI de Azure o Visual Studio. En producción en Azure, usa automáticamente la identidad administrada del recurso. Para mejorar el rendimiento y la depuración en producción, considere la posibilidad de reemplazarlo por una credencial específica, como ManagedIdentityCredential. Para obtener más información, consulte Guía de uso de DefaultAzureCredential.
clientBuilder.UseAzureStorageClustering(options =>
{
options.ConfigureTableServiceClient(
new Uri("https://<your-storage-account>.table.core.windows.net"),
new DefaultAzureCredential());
});
public static void ConfigureAzureClustering(IClientBuilder clientBuilder, string connectionString)
{
clientBuilder.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(connectionString));
}
El cliente detecta todas las puertas de enlace disponibles en el clúster mediante este proveedor. Hay varios proveedores disponibles; aquí, usamos el proveedor de tablas de Azure.
Para obtener más información, consulte Configuración del servidor.
Elementos de la aplicación
public static void ConfigureApplicationParts(IClientBuilder clientBuilder)
{
clientBuilder.ConfigureApplicationParts(
parts => parts.AddApplicationPart(
typeof(IValueGrain).Assembly)
.WithReferences());
}
Para obtener más información, consulte Configuración del servidor.