本地开发配置

有关面向 Orleans 7.0 的工作示例应用程序,请参阅 Orleans:Hello World。 该示例在不同平台上运行的 .NET 控制台应用程序中托管客户端和存储,而粒度和接口则面向 .NET Standard 2.0。

提示

对于旧版本的 Orleans,请参阅 Orleans 示例项目

接收器配置

建议使用 Microsoft.Extensions.Hosting NuGet 包来配置和运行 Silo。 此外,开发 Orleans silo 时,需要 Microsoft.Orleans.Server NuGet 包。 对于本地 Orleans 仓库开发,请配置使用环回地址的 localhost 集群。 若要使用 localhost 集群,请调用 UseLocalhostClustering 扩展方法。 请考虑此示例 Program.cs 文件用于 silo 主机:

using Microsoft.Extensions.Hosting;

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

前面的代码执行以下作:

  • 创建默认主机生成器。
  • 调用 UseOrleans 扩展方法以配置孤岛。
  • 在给定的 UseLocalhostClustering 上调用 ISiloBuilder 扩展方法,以将 silo 配置为使用本地主机集群。
  • 链接 RunConsoleAsync 方法以将 silo 作为控制台应用程序运行。

有关本地开发,请参阅以下示例,其中显示了如何为此情况配置一个存储分区。 它配置并启动在loopback地址上侦听的孤立服务器,分别使用1111130000作为孤立服务器和网关端口。

Microsoft.Orleans.Server NuGet 元包添加到项目。

dotnet add package Microsoft.Orleans.Server

需要通过 ClusterOptionsISiloBuilder 方法配置 Configure,指定你希望 LocalhostClustering 作为你的群集选择(其中此 silo 是主要的),然后配置 silo 终结点。

调用 ConfigureApplicationParts 显式将包含粒度类的程序集添加到应用程序设置。 它还会添加由于 WithReferences 扩展而引用的任何程序集。 完成这些步骤后,构建筒仓主机并启动筒仓。

可以创建面向 .NET Framework 4.6.1 或更高版本的空白控制台应用程序项目以托管孤岛。

下面是有关如何启动本地筒仓的示例:

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

客户端配置

我们建议使用 Microsoft.Extensions.Hosting NuGet 包来配置和运行客户端(以及孤岛)。 也需要 Microsoft.Orleans.Client NuGet 包。 若要在使用客户端上使用本地主机集群,请调用 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 扩展方法,以将客户端配置为使用本地主机集群。
  • 调用 UseConsoleLifetime 扩展方法,将客户端配置为使用控制台生存期。
  • StartAsync 变量调用 host 方法以启动客户端。

有关本地开发,请参阅以下示例,其中显示了如何为此情况配置客户端。 它配置了一个连接到 loopback 信息孤岛的客户端。

Microsoft.Orleans.Client NuGet 元包添加到项目。 熟悉 API 后,可以选择所需的特定包 Microsoft.Orleans.Client ,然后引用它们。

Install-Package Microsoft.Orleans.Client

配置 ClientBuilder,使其群集 ID 与为本地孤岛指定的群集 ID 匹配。 将静态群集指定为群集选项,并指向silo的网关端口。

调用 ConfigureApplicationParts 显式地添加包含粒度接口的程序集到应用程序的设置中。

完成这些步骤后,生成客户端并调用其 Connect() 方法来连接到群集。

可以创建一个空的控制台应用程序项目,面向 .NET Framework 4.6.1 或更高版本以运行客户端,或者重用为托管孤岛而创建的控制台应用程序项目。

下面是客户端如何连接到本地 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();