Compartilhar via


Configuração de desenvolvimento local

Para obter um aplicativo de exemplo em funcionamento que tenha o Orleans 7.0 como destino, confira Orleans: Olá, Mundo. O exemplo hospeda o cliente e o silo em aplicativos de console do .NET que funcionam em diferentes plataformas, enquanto os grãos e interfaces têm .NET Standard 2.0 como destino.

Dica

Para versões mais antigas do Orleans, confira Projetos de exemplo do Orleans.

Configuração de silos

É recomendável usar o pacote NuGet Microsoft.Extensions.Hosting para configurar e executar o silo. Além disso, ao desenvolver um silo do Orleans, você precisa do pacote NuGet Microsoft.Orleans.Server. Para o desenvolvimento de silo local do Orleans, configure o clustering de localhost, que está configurado para usar o endereço de loopback. Para usar o clustering localhost, chame o método de extensão UseLocalhostClustering. Considere este arquivo de exemplo Program.cs do host do silo:

using Microsoft.Extensions.Hosting;

await Host.CreateDefaultBuilder(args)
    .UseOrleans(siloBuilder =>
    {
        siloBuilder.UseLocalhostClustering();
    })
    .RunConsoleAsync();

O código anterior:

  • Cria o construtor de host padrão.
  • Chama o método de extensão UseOrleans para configurar o silo.
  • Chama o método de extensão UseLocalhostClustering no ISiloBuilder determinado para configurar o silo para usar o clustering localhost.
  • Encadeia o método RunConsoleAsync para executar o silo como um aplicativo de console.

Para desenvolvimento local, consulte o exemplo abaixo de como configurar um silo para esse caso. Configura e inicia um silo escutando no endereço loopback, 11111 e 30000 como portas de silo e gateway respectivamente.

Adicione o metapacote NuGet Microsoft.Orleans.Server ao projeto.

dotnet add package Microsoft.Orleans.Server

Você precisa configurar o método ClusterOptions via ISiloBuilder, Configureespecificar que deseja LocalhostClustering como sua opção de cluster com este silo sendo o principal e, em seguida, configurar os terminais do silo.

A chamada ConfigureApplicationParts adiciona explicitamente o assembly com classes granulares à configuração do aplicativo. Ele também adiciona qualquer assembly referenciado devido à extensão WithReferences. Depois que essas etapas forem concluídas, o host de silo será criado e o silo será iniciado.

Você pode criar um projeto de aplicativo de console vazio direcionado ao .NET Framework 4.6.1 ou superior para hospedar um silo e um aplicativo de console .NET.

Veja abaixo um exemplo de como um silo local pode ser iniciado:

try
{
    var host = await BuildAndStartSiloAsync();

    Console.WriteLine("Press Enter to terminate...");
    Console.ReadLine();

    await host.StopAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

static async Task<ISiloHost> BuildAndStartSiloAsync()
{
    var host = new HostBuilder()
      .UseOrleans(builder =>
      {
          builder.UseLocalhostClustering()
              .Configure<ClusterOptions>(options =>
              {
                  options.ClusterId = "dev";
                  options.ServiceId = "MyAwesomeService";
              })
              .Configure<EndpointOptions>(
                  options => options.AdvertisedIPAddress = IPAddress.Loopback)
              .ConfigureLogging(logging => logging.AddConsole());
      })
      .Build();

    await host.StartAsync();

    return host;
}

Configuração do cliente

É recomendável usar o pacote NuGet Microsoft.Extensions.Hosting para configurar e executar os clientes (além do silo). Você também precisa do pacote NuGet Microsoft.Orleans.Client. Para usar o clustering localhost no cliente consumidor, chame o método de extensão UseLocalhostClustering. Considere este arquivo de exemplo Program.cs do host do cliente:

using Microsoft.Extensions.Hosting;

using IHost host = Host.CreateDefaultBuilder(args)
    .UseOrleansClient(client =>
    {
        client.UseLocalhostClustering();
    })
    .UseConsoleLifetime()
    .Build();

await host.StartAsync();

O código anterior:

  • Cria o construtor de host padrão.
  • Chama o método de extensão UseOrleansClient para configurar o cliente.
  • Chama o método de extensão UseLocalhostClustering no IClientBuilder determinado para configurar o cliente para usar o clustering localhost.
  • Chama o método de extensão UseConsoleLifetime para configurar o cliente para usar o tempo de vida do console.
  • Chama o método StartAsync na variável host para iniciar o cliente.

Para desenvolvimento local, consulte o exemplo abaixo de como configurar um cliente para esse caso. Ele configura um cliente que se conectaria a um silo loopback.

Adicione o metapacote NuGet Microsoft.Orleans.Client ao projeto. Depois de se familiarizar com a API, você pode escolher de quais pacotes exatos incluídos em Microsoft.Orleans.Client você realmente precisa e fazer referência a eles.

Install-Package Microsoft.Orleans.Client

Você precisa configurar ClientBuilder com um ID de cluster que corresponda ao que você especificou para o silo local e especificar clustering estático como sua escolha de cluster, apontando-o para a porta de gateway do silo

A chamada ConfigureApplicationParts adiciona explicitamente o assembly com interfaces granulares à configuração do aplicativo.

Depois que essas etapas forem concluídas, podemos criar o cliente e o método Connect() nele para conectar-se ao cluster.

Você pode criar um projeto de aplicativo de console vazio direcionado ao .NET Framework 4.6.1 ou superior para executar um cliente ou reutilizar o projeto de aplicativo de console criado para hospedar um silo.

Veja abaixo um exemplo de como um cliente pode se conectar a um silo local:

var client = new ClientBuilder()
    .UseLocalhostClustering()
    .Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "dev";
        options.ServiceId = "MyAwesomeService";
    })
    .ConfigureLogging(logging => logging.AddConsole())
var client = builder.Build();

await client.Connect();