Condividi tramite


Configurazione dello sviluppo locale

Per un'applicazione di esempio funzionante destinata a Orleans versione 7.0, vedere Orleans: Hello World. L'esempio ospita il client e il silo nelle applicazioni console .NET che funzionano in piattaforme diverse, mentre le granularità e le interfacce hanno come destinazione .NET Standard 2.0.

Suggerimento

Per le versioni precedenti di Orleans, vedere progetti di esempio Orleans.

Configurazione del silo

È consigliabile usare il pacchetto NuGet Microsoft.Extensions.Hosting per configurare ed eseguire il silo. Inoltre, quando si sviluppa un silo Orleans è necessario il pacchetto NuGet Microsoft.Orleans.Server. Per lo sviluppo di silo Orleans locali, si configura il clustering localhost, configurato per l'uso dell'indirizzo di loopback. Per usare il clustering localhost, chiamare il metodo di estensione UseLocalhostClustering. Si consideri questo esempio di file Program.cs dell'host del silo:

using Microsoft.Extensions.Hosting;

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

Il codice precedente:

  • Crea un generatore host predefinito.
  • Chiama il metodo di estensione UseOrleans per configurare il silo.
  • Chiama il metodo di estensione UseLocalhostClustering nel ISiloBuilder specificato per configurare il silo per l'uso del clustering localhost.
  • Concatena il metodo RunConsoleAsync per eseguire il silo come applicazione console.

Per lo sviluppo locale, vedere l'esempio seguente di come configurare un silo per tale caso. Configura e avvia un silo in ascolto sull'indirizzo loopback, 11111 e 30000 rispettivamente come porte silo e gateway.

Aggiungere il meta-pacchetto NuGet Microsoft.Orleans.Server al progetto.

dotnet add package Microsoft.Orleans.Server

È necessario configurare ClusterOptions tramite il metodo ISiloBuilder Configure, specificare che si vuole LocalhostClustering come scelta di clustering con questo silo come primario e quindi configurare gli endpoint silo.

La chiamata ConfigureApplicationParts aggiunge in modo esplicito l'assembly con classi granulari alla configurazione dell'applicazione. Aggiunge anche qualsiasi assembly a cui si fa riferimento a causa dell'estensione WithReferences. Al termine di questi passaggi, l'host silo viene compilato e il silo viene avviato.

È possibile creare un progetto di applicazione console vuoto destinato a .NET Framework 4.6.1 o versione successiva per ospitare un silo e un'applicazione console .NET.

Ecco un esempio di come è possibile avviare un silo locale:

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;
}

Configurazione del client

È consigliabile usare il pacchetto NuGet Microsoft.Extensions.Hosting per configurare ed eseguire i client (oltre al silo). È anche necessario il pacchetto NuGet Microsoft.Orleans.Client. Per usare il clustering localhost nel client di utilizzo, chiamare il metodo di estensione UseLocalhostClustering. Si consideri questo esempio di file Program.cs dell'host client:

using Microsoft.Extensions.Hosting;

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

await host.StartAsync();

Il codice precedente:

  • Crea un generatore host predefinito.
  • Chiama il metodo di estensione UseOrleansClient per configurare il client.
  • Chiama il metodo di estensione UseLocalhostClustering nel IClientBuilder specificato per configurare il client per l'uso del clustering localhost.
  • Chiama il metodo di estensione UseConsoleLifetime per configurare il client per l'uso della durata della console.
  • Chiama il metodo StartAsync nella variabile host per avviare il client.

Per lo sviluppo locale, vedere l'esempio seguente di come configurare un client per tale caso. Configura un client che si connette a un silo loopback.

Aggiungere il meta-pacchetto NuGet Microsoft.Orleans.Client al progetto. Dopo aver preso familiarità con l'API, è possibile scegliere quali pacchetti inclusi in Microsoft.Orleans.Client sono effettivamente necessari e farvi riferimento.

Install-Package Microsoft.Orleans.Client

È necessario configurare ClientBuilder con un ID cluster corrispondente a quello specificato per il silo locale e specificare il clustering statico come scelta di clustering che punta alla porta gateway del silo

La chiamata ConfigureApplicationParts aggiunge in modo esplicito l'assembly con interfacce granulari alla configurazione dell'applicazione.

Al termine di questi passaggi, è possibile compilare il client e il metodo Connect() per connettersi al cluster.

È possibile creare un progetto di applicazione console vuoto destinato a .NET Framework 4.6.1 o versione successiva per eseguire un client o riutilizzare il progetto di applicazione console creato per l'hosting di un silo.

Ecco un esempio di come un client può connettersi a un silo locale:

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