Configuração do cliente

Configure um cliente para se conectar a um cluster de silos e enviar solicitações para grãos programaticamente por meio de um IHostBuilder e várias classes de opções complementares. Assim como as opções de silo, as classes de opção do cliente seguem o padrão Opções no .NET.

Configure um cliente para se conectar a um cluster de silos e enviar solicitações para grãos programaticamente por meio de um ClientBuilder e várias classes de opções complementares. Assim como as opções de silo, as classes de opção do cliente seguem o padrão Opções no .NET.

Dica

Se você quiser apenas iniciar um silo local e um cliente local para fins de desenvolvimento, consulte a configuração de desenvolvimento local.

Dica

Se você estiver usando Aspire, a configuração do cliente será tratada automaticamente. Aspire, ClusterId injeta ServiceId e as configurações do provedor de clustering por meio de variáveis de ambiente, permitindo que você use o método UseOrleansClient sem parâmetros, que é mais simples. Consulte Orleans e a integração Aspire para ver a abordagem recomendada.

Adicione o pacote NuGet Microsoft.Orleans.Clustering.AzureStorage ao seu projeto de cliente.

Há vários aspectos principais da configuração do cliente:

  • Orleans informações de agrupamento
  • Provedor de agrupamento
  • Partes do aplicativo

Exemplo de uma configuração de cliente:

Usar um TokenCredential com um URI de serviço é a abordagem recomendada. Esse padrão evita armazenar segredos na configuração e aproveita a ID do Microsoft Entra para autenticação segura.

DefaultAzureCredential fornece uma cadeia de credenciais que funciona perfeitamente em ambientes locais de desenvolvimento e produção. Durante o desenvolvimento, ele usa suas credenciais da CLI do Azure ou do Visual Studio. Em produção no Azure, ele usa automaticamente a identidade gerenciada atribuída ao recurso.

Dica

DefaultAzureCredential funciona perfeitamente em ambientes de desenvolvimento local e produção. No desenvolvimento, ele usa suas credenciais da CLI do Azure ou do Visual Studio. Em produção no Azure, ele usa automaticamente a identidade gerenciada do recurso. Para melhorar a eficiência e facilidade de depuração em produção, pense em substituí-la por uma credencial específica como ManagedIdentityCredential. Para obter mais informações, consulte As diretrizes de uso para 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 dividir as etapas usadas neste exemplo:

Orleans informações de agrupamento

    .Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "orleans-docker";
        options.ServiceId = "AspNetSampleApp";
    })

Aqui, definimos duas coisas:

  • A ClusterOptions.ClusterId para "my-first-cluster": esta é uma ID exclusiva para o cluster do Orleans. Todos os clientes e silos que usam essa ID podem se comunicar diretamente entre si. Alguns podem optar por usar um ClusterId diferente para cada implantação, por exemplo.
  • A ClusterOptions.ServiceId para "AspNetSampleApp": esta é uma ID exclusiva para seu aplicativo, utilizada por alguns provedores (por exemplo, provedores de persistência). Essa ID deve permanecer estável entre as implantações.

Provedor de agrupamento

Dica

DefaultAzureCredential funciona perfeitamente em ambientes de desenvolvimento local e produção. No desenvolvimento, ele usa suas credenciais da CLI do Azure ou do Visual Studio. Em produção no Azure, ele usa automaticamente a identidade gerenciada do recurso. Para melhorar a eficiência e facilidade de depuração em produção, pense em substituí-la por uma credencial específica como ManagedIdentityCredential. Para obter mais informações, consulte As diretrizes de uso para 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));
}

O cliente descobre todos os gateways disponíveis no cluster usando esse provedor. Vários provedores estão disponíveis; aqui, usamos o provedor de Tabelas do Azure.

Para obter mais informações, consulte a configuração do servidor.

Partes do aplicativo

public static void ConfigureApplicationParts(IClientBuilder clientBuilder)
{
    clientBuilder.ConfigureApplicationParts(
        parts => parts.AddApplicationPart(
            typeof(IValueGrain).Assembly)
            .WithReferences());
}

Para obter mais informações, consulte a configuração do servidor.