Конфигурация локальной разработки

Рабочий пример приложения, предназначенного для Orleans версии 7.0, см. в разделе Orleans: Hello World. В примере размещаются клиент и silo в консольных приложениях .NET, работающих на разных платформах, а зерны и интерфейсы предназначены для .NET Standard 2.0.

Совет

Для более старых версий Orleansсм Orleans . примеры проектов.

Конфигурация Silo

Рекомендуется использовать пакет NuGet Microsoft.Extensions.Hosting для настройки и запуска silo. Кроме того, при разработке Orleans silo вам потребуется Microsoft.Orleans. Пакет NuGet сервера . Для локальной разработки silo настраивается кластеризация localhostOrleans, который настроен для использования адреса обратного цикла. Чтобы использовать localhost кластеризация, вызовите UseLocalhostClustering метод расширения. Рассмотрим этот пример Program.cs файла узла silo:

using Microsoft.Extensions.Hosting;

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

Предыдущий код:

  • Создает построитель узлов по умолчанию.
  • UseOrleans Вызывает метод расширения для настройки silo.
  • UseLocalhostClustering Вызывает метод расширения для заданного ISiloBuilder значения, чтобы настроить silo для использования localhost кластеризация.
  • RunConsoleAsync Объединяет метод для запуска сило в качестве консольного приложения.

Для локальной разработки см. приведенный ниже пример настройки силона для этого случая. Он настраивает и запускает silo прослушивание loopback адреса, 11111 а 30000 также порты silo и шлюза соответственно.

Microsoft.Orleans.Server Добавьте метапакет NuGet в проект.

dotnet add package Microsoft.Orleans.Server

Необходимо настроить ClusterOptions с помощью ISiloBuilderConfigure метода, указать, что вы хотите LocalhostClustering в качестве кластеризация выбора с помощью этого фрагмента, являющегося основным, а затем настроить конечные точки silo.

Вызов ConfigureApplicationParts явно добавляет сборку с классами зерна в программу установки приложения. Он также добавляет любую указанную сборку WithReferences из-за расширения. После выполнения этих действий узел сило создается и запускается сило.

Вы можете создать пустой проект консольного приложения, предназначенный для платформа .NET Framework 4.6.1 или более поздней версии для размещения silo и консольного приложения .NET.

Ниже приведен пример запуска локального фрагмента:

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

Настройка клиента

Рекомендуется использовать пакет NuGet Microsoft.Extensions.Hosting для настройки и запуска клиентов (в дополнение к silo). Вам также нужен Microsoft.Orleans. Пакет NuGet клиента . Чтобы использовать localhost кластеризация на потребляемом UseLocalhostClustering клиенте, вызовите метод расширения. Рассмотрим этот пример Program.cs файла узла клиента:

using Microsoft.Extensions.Hosting;

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

await host.StartAsync();

Предыдущий код:

  • Создает построитель узлов по умолчанию.
  • UseOrleansClient Вызывает метод расширения для настройки клиента.
  • UseLocalhostClustering Вызывает метод расширения для заданного IClientBuilder параметра, чтобы настроить клиент для использования localhost кластеризация.
  • UseConsoleLifetime Вызывает метод расширения, чтобы настроить клиент для использования времени существования консоли.
  • StartAsync Вызывает метод переменнойhost, чтобы запустить клиент.

Для локальной разработки см. приведенный ниже пример настройки клиента для этого случая. Он настраивает клиент, который будет подключаться к loopback silo.

Microsoft.Orleans.Client Добавьте метапакет NuGet в проект. После удобства работы с API можно выбрать и выбрать точные пакеты, включенные в Microsoft.Orleans.Client вас, и ссылаться на них.

Install-Package Microsoft.Orleans.Client

Необходимо настроить ClientBuilder идентификатор кластера, соответствующий указанному для локального silo, и указать статические кластеризация в качестве выбранного вами кластеризация, указывающего его на порт шлюза silo.

ConfigureApplicationParts вызов явно добавляет сборку с интерфейсами зерна в программу установки приложения.

После выполнения этих действий мы можем создать клиент и Connect() метод на нем, чтобы подключиться к кластеру.

Вы можете создать пустой проект консольного приложения, предназначенный для платформа .NET Framework 4.6.1 или более поздней версии для запуска клиента или повторного использования проекта консольного приложения, созданного для размещения silo.

Ниже приведен пример подключения клиента к локальному 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();