Partilhar via


Configuração de desenvolvimento local

Para um exemplo funcional de aplicação direcionado para Orleans 7.0, veja Orleans: Hello World. O exemplo hospeda o cliente e o silo em aplicações de console .NET que funcionam em plataformas diferentes, enquanto os grains e as interfaces visam o .NET Standard 2.0.

Gorjeta

Para versões mais antigas de Orleans, consulte os projetos de exemplo Orleans.

Configuração do silo

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

using Microsoft.Extensions.Hosting;

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

O código anterior faz o seguinte:

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

Para o desenvolvimento local, consulte o exemplo abaixo mostrando como configurar um silo para este caso. Ele configura e inicia um silo que escuta no endereço loopback, usando 11111 e 30000 como as portas de silo e gateway, respectivamente.

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

dotnet add package Microsoft.Orleans.Server

Você precisa configurar ClusterOptions pelo método ISiloBuilderConfigure, especificar que deseja LocalhostClustering como a sua opção de clustering com este silo sendo o principal e, em seguida, configurar endpoints de silo.

A chamada ConfigureApplicationParts adiciona explicitamente o assembly que contém as classes de grão à configuração da aplicação. Ele também adiciona qualquer assembly referenciado devido à WithReferences extensão. Após concluir estes passos, construa e inicie o servidor do 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

Recomendamos usar o pacote NuGet Microsoft.Extensions.Hosting para configurar e executar clientes (além do silo). Você também precisa do Microsoft.Orleans.Client Pacote NuGet. Para usar o agrupamento localhost no cliente utilizador, chame o método de extensão UseLocalhostClustering. Considere este exemplo Program.cs arquivo para o 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 faz o seguinte:

  • Cria um 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 dado para configurar o cliente para usar o clustering localhost.
  • Chama o UseConsoleLifetime método de extensão para configurar o cliente para usar o tempo de vida do console.
  • Chama o StartAsync método na host variável para iniciar o cliente.

Para o desenvolvimento local, consulte o exemplo abaixo mostrando como configurar um cliente para este caso. Ele configura um cliente que se conecta a um loopback silo.

Adicione o Microsoft.Orleans.Client metapacote NuGet ao seu projeto. Depois de te sentires confortável com a API, podes escolher os pacotes exatos incluídos no Microsoft.Orleans.Client de que precisas e referenciá-los.

Install-Package Microsoft.Orleans.Client

Configure ClientBuilder com um ID de cluster correspondente ao especificado para o silo local. Especifique o clustering estático como a sua opção de clustering, direcionando-o para a porta de gateway do silo.

A chamada ConfigureApplicationParts adiciona explicitamente o assembly que contém as interfaces 'grain' à configuração da aplicação.

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.

Aqui está 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();