ローカル開発の構成
Orleans 7.0 をターゲットとする実際のサンプル アプリケーションについては、Orleans: Hello World をご覧ください。 このサンプルは、さまざまなプラットフォームで動作する .NET コンソール アプリケーションでクライアントとサイロをホストしますが、グレインとインターフェイスは .NET Standard 2.0 をターゲットとしています。
ヒント
Orleans の旧バージョンについては、Orleans のサンプル プロジェクトをご覧ください。
サイロの構成
サイロを構成して実行するために Microsoft.Extensions.Hosting NuGet パッケージを使用することをお勧めします。 また、Orleans サイロを開発するときには、Microsoft.Orleans.Server NuGet パッケージを使用する必要があります。 ローカルでの Orleans サイロ開発では、ループバック アドレスを使用するように構成された localhost クラスタリングを構成します。 localhost クラスタリングを使用するには、UseLocalhostClustering 拡張メソッドを呼び出します。 次に示すサイロ ホストの Program.cs ファイルの例を検討します。
using Microsoft.Extensions.Hosting;
await Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder.UseLocalhostClustering();;
})
.RunConsoleAsync();
上記のコードでは次の操作が行われます。
- 既定のホスト ビルダーを作成します。
- サイロを構成するための
UseOrleans
拡張メソッドを呼び出します。 - localhost クラスタリングを使用するようにサイロを構成するために、指定された ISiloBuilder で
UseLocalhostClustering
拡張メソッドを呼び出します。 - サイロをコンソール アプリケーションとして実行するために、
RunConsoleAsync
メソッドをつなげます。
ローカル開発については、その場合にサイロを構成する方法を示す以下の例を参照してください。 loopback
アドレス (サイロとゲートウェイのポートがそれぞれ 11111
と 30000
) でリッスンするサイロを構成して開始します。
Microsoft.Orleans.Server
NuGet メタパッケージをプロジェクトに追加します。
dotnet add package Microsoft.Orleans.Server
ISiloBuilder Configure
メソッドを使用して ClusterOptions を構成し、このサイロをプライマリとして LocalhostClustering
をクラスタリングの選択肢として指定し、サイロ エンドポイントを構成する必要があります。
ConfigureApplicationParts の呼び出しで、グレイン クラスを含むアセンブリをアプリケーション セットアップに明示的に追加します。 また、WithReferences 拡張のために参照されるアセンブリも追加します。 これらの手順が完了すると、サイロ ホストが構築され、サイロが開始されます。
.NET コンソール アプリケーションとサイロをホストするための .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 パッケージも必要です。 使用するクライアントで localhost クラスタリングを使用するには、UseLocalhostClustering 拡張メソッドを呼び出します。 次に示すクライアント ホストの Program.cs ファイルの例を検討します。
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(client =>
{
client.UseLocalhostClustering();
})
.UseConsoleLifetime()
.Build();
await host.StartAsync();
上記のコードでは次の操作が行われます。
- 既定のホスト ビルダーを作成します。
- クライアントを構成するための
UseOrleansClient
拡張メソッドを呼び出します。 - localhost クラスタリングを使用するようにクライアントを構成するために、指定された IClientBuilder で
UseLocalhostClustering
拡張メソッドを呼び出します。 - コンソールの有効期間を使用するようにクライアントを構成するために、
UseConsoleLifetime
拡張メソッドを呼び出します。 - クライアントを開始するために
host
変数でStartAsync
メソッドを呼び出します。
ローカル開発については、その場合にクライアントを構成する方法を示す以下の例を参照してください。 loopback
サイロに接続するクライアントを構成します。
Microsoft.Orleans.Client
NuGet メタパッケージをプロジェクトに追加します。 API に慣れたら、Microsoft.Orleans.Client
に含まれるパッケージのうち、実際に必要なものを厳密に選択し、それらを代わりに参照することができます。
Install-Package Microsoft.Orleans.Client
ローカル サイロに指定したものと一致するクラスター ID を使用して ClientBuilder を構成し、サイロのゲートウェイ ポートを指すようにクラスタリングの選択肢として静的クラスタリングを指定する必要があります。
ConfigureApplicationParts
の呼び出しで、グレイン インターフェイスを含むアセンブリをアプリケーション セットアップに明示的に追加します。
これらの手順が完了したら、クライアントと、それに対する Connect()
メソッドを構築して、クラスターに接続できます。
クライアントを実行するために、.NET Framework 4.6.1 以降を対象とする空のコンソール アプリケーション プロジェクトを作成するか、サイロをホストするために作成したコンソール アプリケーション プロジェクトを再利用することができます。
以下に、クライアントがローカル サイロに接続する方法の例を示します。
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();
.NET