Compartilhar via


Configuração de desenvolvimento local

Para obter um exemplo de aplicativo funcional para Orleans 7.0, consulte 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 como destino o .NET Standard 2.0.

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 Orleans silo, você precisa do Pacote NuGet Microsoft.Orleans.Server . Para o desenvolvimento de silo local Orleans, configure o clustering no localhost, que usa 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 para o anfitrião do silo.

using Microsoft.Extensions.Hosting;

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

O código anterior faz o seguinte:

  • 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 mostrando como configurar um silo para esse caso. Ele configura e inicia um silo ouvindo no endereço loopback, usando as portas 11111 e 30000 para o silo e o gateway, respectivamente.

Adicione o Microsoft.Orleans.Server metapacote NuGet ao seu 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 ConfigureApplicationParts chamada adiciona explicitamente o assembly que contém classes granuladas à configuração do aplicativo. Ele também adiciona qualquer assembly referenciado devido à extensão WithReferences. Depois de concluir essas etapas, crie o host do silo e inicie o silo.

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

Aqui está um exemplo de como você pode iniciar um silo local:

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 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 exemplo Program.cs arquivo para o host cliente:

using Microsoft.Extensions.Hosting;

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

await host.StartAsync();

O código anterior faz o seguinte:

  • 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 mostrando como configurar um cliente para esse caso. Ele configura um cliente que se conecta a um loopback silo.

Adicione o Microsoft.Orleans.Client metapacote NuGet ao seu projeto. Depois de se sentir confortável com a API, você pode selecionar os pacotes exatos de Microsoft.Orleans.Client que precisa e referenciá-los.

Install-Package Microsoft.Orleans.Client

Configure ClientBuilder com uma ID de cluster correspondente à especificada para o silo local. Especifique a opção de clustering estático e direcione-a para a porta de gateway do silo.

A chamada ConfigureApplicationParts adiciona explicitamente o assembly que contém interfaces de grãos à configuração do aplicativo.

Depois de concluir essas etapas, crie o cliente e chame seu Connect() método para se conectar 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 o 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();