Orleans-Anwendung
Eine typische Orleans-Anwendung besteht aus einem Cluster von Serverprozessen (Silos), in denen Grains leben, und einer Reihe von Clientprozessen, in der Regel Webserver, die externe Anforderungen empfangen, diese in Grain-Methodenaufrufe umwandeln und Ergebnisse zurückgeben. Daher muss zum Ausführen einer Orleans-Anwendung zunächst ein Cluster von Silos gestartet werden. Zu Testzwecken kann ein Cluster aus einem einzelnen Silo bestehen. Für eine zuverlässige Produktionsbereitstellung benötigen wir mehrere Silos in einem Cluster für Fehlertoleranz und Skalierung.
Sobald der Cluster ausgeführt wird, können wir einen oder mehrere Clientprozesse starten, die eine Verbindung mit dem Cluster herstellen und Anforderungen an die Grains senden können. Clients stellen eine Verbindung mit einem speziellen TCP-Endpunkt in Silos her: Gateway. Standardmäßig ist für jedes Silo in einem Cluster ein Clientgateway aktiviert. So können Clients parallel eine Verbindung mit allen Silos herstellen, um die Leistung und Resilienz zu verbessern.
Konfigurieren und Starten eines Silos
Ein Silo wird programmgesteuert über ein ClusterConfiguration-Objekt konfiguriert. Sie kann direkt instanziiert und aufgefüllt werden, Einstellungen aus einer Datei laden oder mit mehreren verfügbaren Hilfsmethoden für verschiedene Bereitstellungsumgebungen erstellt werden. Für lokale Tests ist die Verwendung der LocalhostPrimarySilo-Hilfsmethode am einfachsten. Das Konfigurationsobjekt wird dann an eine neue Instanz der SiloHost-Klasse übergeben, die danach initialisiert und gestartet werden kann.
Sie können ein leeres Konsolenanwendungsprojekt erstellen, das auf .NET Framework 4.6.1 oder höher zum Hosten eines Silos ausgerichtet ist.
Fügen Sie dem Projekt das NuGet-Metapaket Microsoft.Orleans.Server
hinzu.
Install-Package Microsoft.Orleans.Server
Hier folgt ein Beispiel dafür, wie ein lokales Silo gestartet werden kann:
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();
Konfigurieren und Herstellen einer Verbindung mit einem Client
Ein Client zum Herstellen einer Verbindung mit einem Silocluster und zum Senden von Anforderungen an Grains wird programmgesteuert über ein ClientConfiguration-Objekt und einen ClientBuilder. Das ClientConfiguration
-Objekt kann direkt instanziiert und aufgefüllt werden, Einstellungen aus einer Datei laden oder mit mehreren verfügbaren Hilfsmethoden für verschiedene Bereitstellungsumgebungen erstellt werden. Für lokale Tests ist die Verwendung der LocalhostSilo-Hilfsmethode am einfachsten. Das Konfigurationsobjekt wird dann an eine neue Instanz der ClientBuilder
-Klasse übergeben.
ClientBuilder
macht weitere Methoden zum Konfigurieren zusätzlicher Clientfeatures verfügbar. Danach wird die ClientBuilder.Build()-Methode des ClientBuilder
-Objekts aufgerufen, um eine Implementierung der IClusterClient-Schnittstelle abzurufen. Schließlich wird die IClusterClient.Connect()-Methode für das zurückgegebene Objekt aufgerufen, um eine Verbindung mit dem Cluster herzustellen.
Sie können ein leeres Konsolenanwendungsprojekt für .NET Framework 4.6.1 oder höher erstellen, um einen Client auszuführen, oder das Konsolenanwendungsprojekt wiederverwenden, das Sie für das Hosting eines Silos erstellt haben. Fügen Sie dem Projekt das NuGet-Metapaket Microsoft.Orleans.Client
hinzu.
Install-Package Microsoft.Orleans.Client
Hier sehen Sie ein Beispiel dafür, wie ein Client eine Verbindung mit einem lokalen Silo herstellen kann:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
Produktionskonfigurationen
Die hier verwendeten Konfigurationsbeispiele dienen zum Testen von Silos und Clients, die auf demselben Computer wie localhost
ausgeführt werden. In der Produktion werden Silos und Clients in der Regel auf verschiedenen Servern ausgeführt und mit einer der zuverlässigen Clusterkonfigurationsoptionen konfiguriert. Weitere Informationen hierzu finden Sie im Konfigurationshandbuch und in der Beschreibung der Clusterverwaltung.