Partilhar via


Configuração de desenvolvimento local

Para obter um aplicativo de exemplo de trabalho destinado a Orleans 7.0, consulte Orleans: Hello World. O exemplo hospeda o cliente e o silo em aplicativos de console .NET que funcionam em plataformas diferentes, enquanto os grãos e interfaces visam o .NET Standard 2.0.

Gorjeta

Para versões mais antigas do , consulte Orleans projetos de Orleansexemplo.

Configuração do silo

É 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 da Microsoft.Orleans. Pacote NuGet do servidor . Para o desenvolvimento de silo local Orleans , configure o clustering localhost, que é configurado para usar o endereço de loopback. Para usar o clustering localhost, chame o UseLocalhostClustering método extension. Considere este exemplo Program.cs arquivo do host do silo:

using Microsoft.Extensions.Hosting;

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

O código anterior:

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

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

dotnet add package Microsoft.Orleans.Server

Você precisa configurar ClusterOptions via ISiloBuilder Configure método, especificar que deseja LocalhostClustering como sua opção de clustering com esse silo sendo o principal e, em seguida, configurar pontos de extremidade de silo.

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

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

Aqui está 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 clientes (além do silo). Você também precisa do Microsoft.Orleans. Pacote NuGet do cliente . Para usar o clustering localhost no cliente consumidor, chame o UseLocalhostClustering método de extensão. Considere este exemplo Program.cs arquivo 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 um construtor de host padrão.
  • Chama o método de UseOrleansClient extensão para configurar o cliente.
  • Chama o UseLocalhostClustering método de extensão fornecido IClientBuilder para configurar o cliente para usar 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 desenvolvimento local, consulte o exemplo abaixo de como configurar um cliente para esse caso. Ele configura um cliente que se conectaria a um loopback silo.

Adicione o Microsoft.Orleans.Client metapacote NuGet ao projeto. Depois de se sentir confortável com a API, você pode escolher quais pacotes exatos incluídos em Microsoft.Orleans.Client você realmente precisa e consultá-los.

Install-Package Microsoft.Orleans.Client

Você precisa configurar ClientBuilder com um ID de cluster que corresponda ao especificado para o silo local e especificar clustering estático como sua opção de clustering apontando-o para a porta de gateway do silo

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

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

Você pode criar um projeto de aplicativo de console vazio destinado 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.

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();