Udostępnij przez


Konfiguracja programowania lokalnego

Aby zapoznać się z działającą przykładową aplikacją przeznaczoną dla Orleans wersji 7.0, zobacz Orleans: Hello World. Przykład hostuje klienta i silosy w aplikacjach konsolowych platformy .NET, które działają na różnych platformach, podczas gdy ziarna i interfejsy są przeznaczone dla platformy .NET Standard 2.0.

Napiwek

W przypadku starszych wersji programu Orleanszobacz Orleans przykładowe projekty.

Konfiguracja silosu

Zalecamy użycie pakietu NuGet Microsoft.Extensions.Hosting w celu skonfigurowania i uruchomienia silosu. Ponadto podczas tworzenia silosu Orleans potrzebny jest pakiet NuGet Microsoft.Orleans.Server. W przypadku rozwoju lokalnych silosów Orleans skonfiguruj klastrowanie localhost, które używa adresu loopback. Aby użyć klastrowania localhost, wywołaj metodę rozszerzenia UseLocalhostClustering. Rozważmy ten przykład Program.cs pliku dla hosta silosu:

using Microsoft.Extensions.Hosting;

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

Powyższy kod wykonuje następujące czynności:

  • Tworzy domyślnego konstruktora hostów.
  • Wywołuje metodę rozszerzenia UseOrleans w celu konfiguracji silosu.
  • Wywołuje metodę UseLocalhostClustering rozszerzenia na danej ISiloBuilder, aby skonfigurować silos do korzystania z klastrowania na localhost.
  • Powiązanie metody RunConsoleAsync do uruchomienia silosu jako aplikacji konsolowej.

W przypadku programowania lokalnego zapoznaj się z poniższym przykładem pokazującym sposób konfigurowania silosu dla tego przypadku. Konfiguruje i uruchamia silos nasłuchujący na adresie loopback, używając portu silosu 11111 oraz portu bramy 30000.

Microsoft.Orleans.Server Dodaj meta-pakiet NuGet do projektu.

dotnet add package Microsoft.Orleans.Server

Należy skonfigurować ClusterOptions za pomocą metody ISiloBuilderConfigure, określić, że chcesz użyć LocalhostClustering jako preferowanego klastra, mając ten silos jako główny, a następnie skonfigurować punkty końcowe silosu.

Wywołanie ConfigureApplicationParts jawnie dodaje zestaw zawierający klasy ziarna do konfiguracji aplikacji. Dodaje również wszystkie przywołane zestawy z powodu rozszerzenia WithReferences. Po wykonaniu tych kroków zbuduj serwer silosu i uruchom silos.

Możesz utworzyć pusty projekt aplikacji konsolowej przeznaczony dla platformy .NET Framework 4.6.1 lub nowszej na potrzeby hostowania silosu.

Oto przykład uruchamiania lokalnego silosu:

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

Konfiguracja klientów

Zalecamy używanie pakietu NuGet Microsoft.Extensions.Hosting do konfigurowania i uruchamiania klientów (oprócz silosu). Potrzebujesz również pakietu NuGet Microsoft.Orleans.Client. Aby użyć klastrowania localhost na kliencie odbierającym, wywołaj metodę rozszerzenia UseLocalhostClustering. Rozważmy ten przykład Program.cs pliku dla hosta klienta:

using Microsoft.Extensions.Hosting;

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

await host.StartAsync();

Powyższy kod wykonuje następujące czynności:

  • Tworzy domyślnego konstruktora hostów.
  • Wywołuje metodę rozszerzenia UseOrleansClient w celu skonfigurowania klienta.
  • Wywołuje metodę rozszerzenia UseLocalhostClustering dla podanego IClientBuilder, aby skonfigurować klienta do korzystania z klastrowania localhost.
  • Wywołuje metodę rozszerzenia UseConsoleLifetime, aby skonfigurować klienta do korzystania z cyklu życia konsoli.
  • Wywołuje metodę StartAsync w zmiennej host , aby uruchomić klienta.

W przypadku programowania lokalnego zapoznaj się z poniższym przykładem pokazującym sposób konfigurowania klienta dla tego przypadku. Konfiguruje klienta, który łączy się z silosem loopback .

Microsoft.Orleans.Client Dodaj meta-pakiet NuGet do projektu. Po zapoznaniu się z interfejsem API możesz wybierać konkretne pakiety zawarte w Microsoft.Orleans.Client, które są potrzebne, i odwoływać się do nich.

Install-Package Microsoft.Orleans.Client

Skonfiguruj ClientBuilder przy użyciu identyfikatora klastra zgodnego z określonym dla silosu lokalnego. Określ klaster statyczny jako wybór klastra, wskazując go na port bramy silosu.

Wywołanie ConfigureApplicationParts jawnie dodaje zestaw zawierający interfejsy dla ziaren do ustawień aplikacji.

Po wykonaniu tych kroków skompiluj klienta i wywołaj jego Connect() metodę w celu nawiązania połączenia z klastrem.

Możesz utworzyć pusty projekt aplikacji konsolowej przeznaczony dla programu .NET Framework 4.6.1 lub nowszego na potrzeby uruchamiania klienta lub użyć ponownie projektu aplikacji konsolowej utworzonego do hostowania silosu.

Oto przykład sposobu, w jaki klient może nawiązać połączenie z lokalnym silosem:

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