Delen via


Configuratie van lokale ontwikkeling

Zie Orleans: Hallo wereld voor een werkende voorbeeldtoepassing die is gericht op Orleans 7.0. Het voorbeeld fungeert als host voor de client en de silo in .NET-consoletoepassingen die op verschillende platforms werken, terwijl de korrels en interfaces gericht zijn op .NET Standard 2.0.

Tip

Zie voorbeeldprojecten voor oudere versies van OrleansOrleans .

Siloconfiguratie

Het is raadzaam om het NuGet-pakket Microsoft.Extensions.Hosting te gebruiken om de silo te configureren en uit te voeren. Bij het ontwikkelen van een Orleans silo hebt u ook microsoft nodig.Orleans Server NuGet-pakket. Voor lokale Orleans siloontwikkeling configureert u localhost-clustering, die is geconfigureerd voor het gebruik van het loopback-adres. Als u localhost-clustering wilt gebruiken, roept u de UseLocalhostClustering extensiemethode aan. Bekijk dit voorbeeld Program.cs bestand van de silohost:

using Microsoft.Extensions.Hosting;

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

Met de voorgaande code wordt:

  • Hiermee maakt u een standaardhostbouwer.
  • Roept de UseOrleans extensiemethode aan om de silo te configureren.
  • Roept de UseLocalhostClustering extensiemethode aan op de opgegeven ISiloBuilder om de silo te configureren voor het gebruik van localhost-clustering.
  • Koppelt de RunConsoleAsync methode om de silo uit te voeren als consoletoepassing.

Raadpleeg voor lokale ontwikkeling het onderstaande voorbeeld van het configureren van een silo voor dat geval. Het configureert en start een silo die luistert op het loopback adres, 11111 en 30000 als silo- en gatewaypoorten.

Voeg het Microsoft.Orleans.Server NuGet-metapakket toe aan het project.

dotnet add package Microsoft.Orleans.Server

U moet via ISiloBuilder Configure de methode configurerenClusterOptions, opgeven dat u wilt LocalhostClustering als uw clusteringskeuze met deze silo als primair en vervolgens silo-eindpunten configureren.

De ConfigureApplicationParts aanroep voegt de assembly expliciet toe met graanklassen aan de installatie van de toepassing. Er wordt ook een assembly waarnaar wordt verwezen, toegevoegd vanwege de WithReferences extensie. Nadat deze stappen zijn voltooid, wordt de silohost gebouwd en wordt de silo gestart.

U kunt een leeg consoletoepassingsproject maken dat is gericht op .NET Framework 4.6.1 of hoger voor het hosten van een silo en een .NET-consoletoepassing.

Hier volgt een voorbeeld van hoe een lokale silo kan worden gestart:

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

Clientconfiguratie

Het is raadzaam om het NuGet-pakket Microsoft.Extensions.Hosting te gebruiken om clients te configureren en uit te voeren (naast de silo). U hebt ook microsoft nodig.Orleans Client NuGet-pakket. Als u localhost-clustering wilt gebruiken op de verbruikende client, roept u de UseLocalhostClustering extensiemethode aan. Bekijk dit voorbeeld Program.cs bestand van de clienthost:

using Microsoft.Extensions.Hosting;

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

await host.StartAsync();

Met de voorgaande code wordt:

  • Hiermee maakt u een standaardhostbouwer.
  • Roept de UseOrleansClient extensiemethode aan om de client te configureren.
  • Roept de UseLocalhostClustering extensiemethode aan op de opgegeven IClientBuilder om de client te configureren voor het gebruik van localhost-clustering.
  • Roept de UseConsoleLifetime extensiemethode aan om de client te configureren voor het gebruik van de levensduur van de console.
  • Roept de StartAsync methode op de host variabele aan om de client te starten.

Raadpleeg het onderstaande voorbeeld van het configureren van een client voor dat geval voor lokale ontwikkeling. Hiermee configureert u een client die verbinding maakt met een loopback silo.

Voeg het Microsoft.Orleans.Client NuGet-metapakket toe aan het project. Nadat u vertrouwd bent met de API, kunt u kiezen welke exacte pakketten u daadwerkelijk Microsoft.Orleans.Client nodig hebt en ernaar verwijzen.

Install-Package Microsoft.Orleans.Client

U moet configureren ClientBuilder met een cluster-id die overeenkomt met de id die u hebt opgegeven voor de lokale silo en statische clustering opgeven als uw clustering-keuze die deze verwijst naar de gatewaypoort van de silo

ConfigureApplicationParts roept expliciet de assembly met graaninterfaces toe aan de installatie van de toepassing.

Nadat deze stappen zijn voltooid, kunnen we de client en Connect() methode bouwen om verbinding te maken met het cluster.

U kunt een leeg consoletoepassingsproject maken dat is gericht op .NET Framework 4.6.1 of hoger voor het uitvoeren van een client of het consoletoepassingsproject dat u hebt gemaakt voor het hosten van een silo opnieuw gebruiken.

Hier volgt een voorbeeld van hoe een client verbinding kan maken met een lokale silo:

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