Orleans アプリケーション
一般的な Orleans アプリケーションは、グレインが存在するサーバー プロセス (サイロ) のクラスターと、外部要求を受信し、グレイン メソッドの呼び出しに変換して結果を返す、一連のクライアント プロセス (通常は Web サーバー) で構成されます。 そのため、Orleans アプリケーションを実行するために最初に行う必要があるのは、サイロのクラスターを起動することです。 テスト目的のために、クラスターを 1 つのサイロで構成することができます。 信頼性の高い運用環境のデプロイでは、フォールト トレランスとスケーリングのために、クラスター内に複数のサイロが必要です。
クラスターが実行されると、クラスターに接続する 1 つ以上のクライアント プロセスを起動し、グレインに要求を送信できるようになります。 クライアントはサイロ上の特別な TCP エンドポイントであるゲートウェイに接続します。 既定では、クラスター内のすべてのサイロでクライアント ゲートウェイが有効になっています。 そのため、クライアントはすべてのサイロに並列で接続でき、パフォーマンスと回復性を向上させることができます。
サイロの構成と起動
サイロは ClusterConfiguration オブジェクトを使ってプログラムで構成されます。 サイロは、直接インスタンス化して値を入力することも、ファイルから設定を読み込むことも、さまざまなデプロイ環境で使用できるヘルパー メソッドで作成することもできます。 ローカルでのテストでは、LocalhostPrimarySilo ヘルパー メソッドを使うのが最も簡単です。 構成オブジェクトは SiloHost クラスの新しいインスタンスに渡され、初期化された後に起動することができます。
サイロをホストするために、.NET Framework 4.6.1 以降を対象とする空のコンソール アプリケーション プロジェクトを作成できます。
Microsoft.Orleans.Server
NuGet メタパッケージをプロジェクトに追加します。
Install-Package Microsoft.Orleans.Server
以下は、ローカル サイロを起動する方法の例です。
var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();
Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();
// shut the silo down after we are done.
silo.ShutdownOrleansSilo();
クライアントを構成して接続する
サイロのクラスターに接続してグレインに要求を送信するためのクライアントは、ClientConfiguration オブジェクトと ClientBuilder を使ってプログラムで構成されます。 ClientConfiguration
オブジェクトは、直接インスタンス化して値を入力することも、ファイルから設定を読み込むことも、さまざまなデプロイ環境で使用できるヘルパー メソッドで作成することもできます。 ローカルでのテストでは、LocalhostSilo ヘルパー メソッドを使うのが最も簡単です。 構成オブジェクトは、ClientBuilder
クラスの新しいインスタンスに渡されます。
ClientBuilder
は、追加のクライアント機能を構成するための、より多くのメソッドを公開しています。 その後、ClientBuilder
オブジェクトの ClientBuilder.Build() メソッドを呼び出して IClusterClient インターフェイスの実装を取得します。 最後に、返されたオブジェクトの IClusterClient.Connect() メソッドを呼び出して、クラスターに接続します。
クライアントを実行するために、.NET Framework 4.6.1 以降を対象とする空のコンソール アプリケーション プロジェクトを作成するか、サイロをホストするために作成したコンソール アプリケーション プロジェクトを再利用することができます。 Microsoft.Orleans.Client
NuGet メタパッケージをプロジェクトに追加します。
Install-Package Microsoft.Orleans.Client
以下は、クライアントがローカル サイロに接続する方法の例です。
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
運用環境構成
ここで使った構成例は、localhost
と同じマシン上で動作するサイロとクライアントをテストするためのものです。 運用環境では、サイロとクライアントは通常、異なるサーバー上で動作し、信頼性の高いクラスター構成オプションの 1 つで構成されます。 詳細については、構成ガイドと、クラスター管理の説明を参照してください。