Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine funktionierende Beispielanwendung für Orleans 7.0 finden Sie unter Orleans: Hello World. Im Beispiel werden die Clients und Silos in .NET-Konsolenanwendungen gehostet, die auf verschiedenen Plattformen arbeiten, während die Grains und Schnittstellen das Ziel haben, .NET Standard 2.0 zu unterstützen.
Tipp
Informationen zu älteren Versionen von Orleans finden Sie unter OrleansBeispielprojekte.
Silokonfiguration
Wir empfehlen die Verwendung des Microsoft.Extensions.Hosting NuGet-Pakets zum Konfigurieren und Ausführen des Silos. Außerdem benötigen Sie bei der Entwicklung eines OrleansSilos das Microsoft.Orleans.Server NuGet-Paket. Konfigurieren Sie für die lokale Orleans Siloentwicklung das Localhost-Clustering, das die Loopbackadresse verwendet. Um das Localhost-Clustering zu verwenden, rufen Sie die UseLocalhostClustering-Erweiterungsmethode auf. Betrachten Sie dieses Program.cs-Beispiel für den Silo-Host:
using Microsoft.Extensions.Hosting;
await Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder.UseLocalhostClustering();
})
.RunConsoleAsync();
Der vorangehende Code führt folgende Aktionen aus:
- Erstellt einen Standardhostgenerator.
- Ruft die Erweiterungsmethode
UseOrleansauf, um das Silo zu konfigurieren. - Ruft die Erweiterungsmethode
UseLocalhostClusteringauf dem angegebenen ISiloBuilder auf, um das Silo so zu konfigurieren, dass es Localhost-Clustering verwendet. - Verkettet die
RunConsoleAsync-Methode, um das Silo als Konsolenanwendung auszuführen.
Informationen zur lokalen Entwicklung finden Sie im folgenden Beispiel, in dem gezeigt wird, wie Sie einen Silo für diesen Fall konfigurieren. Es konfiguriert und startet ein Silo, das auf die loopback-Adresse lauscht, wobei 11111 als Silosport und 30000 als Gatewayport verwendet werden.
Fügen Sie das Microsoft.Orleans.Server NuGet-Metapaket zu Ihrem Projekt hinzu.
dotnet add package Microsoft.Orleans.Server
Sie müssen ClusterOptions über die ISiloBuilder-Configure-Methode konfigurieren und dabei angeben, dass Sie LocalhostClustering als Ihre Wahl für das Clustering wünschen, wobei dieses Silo das primäre ist, und dann die Siloendpunkte konfigurieren.
Der ConfigureApplicationParts Aufruf fügt die Assembly, die Kornklassen enthält, explizit zum Anwendungssetup hinzu. Er fügt auch jede referenzierte Assembly aufgrund der WithReferences-Erweiterung hinzu. Erstellen Sie nach Abschluss dieser Schritte den Silohost, und starten Sie das Silo.
Sie können ein leeres Konsolenanwendungsprojekt für .NET Framework 4.6.1 oder höher für das Hosten eines Silos erstellen.
Hier ist ein Beispiel dafür, wie Sie ein lokales Silo starten können:
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;
}
Clientkonfiguration
Wir empfehlen die Verwendung des Microsoft.Extensions.Hosting NuGet-Pakets zum Konfigurieren und Ausführen von Clients (zusätzlich zum Silo). Außerdem benötigen Sie das NuGet-Paket Microsoft.Orleans.Client. Um Localhost-Clustering auf dem verarbeitenden Client zu verwenden, rufen Sie die Erweiterungsmethode UseLocalhostClustering auf. Betrachten Sie dieses Beispiel Program.cs Datei für den Clienthost:
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateDefaultBuilder(args)
.UseOrleansClient(client =>
{
client.UseLocalhostClustering();
})
.UseConsoleLifetime()
.Build();
await host.StartAsync();
Der vorangehende Code führt folgende Aktionen aus:
- Erstellt einen Standardhostgenerator.
- Ruft die Erweiterungsmethode
UseOrleansClientauf, um den Client zu konfigurieren. - Ruft die Erweiterungsmethode
UseLocalhostClusteringfür den angegebenen IClientBuilder auf, um den Client für die Verwendung von Localhost-Clustering zu konfigurieren. - Ruft die Erweiterungsmethode
UseConsoleLifetimeauf, um den Client so zu konfigurieren, dass die Konsolenlebensdauer verwendet wird. - Ruft die
StartAsync-Methode für diehost-Variable auf, um den Client zu starten.
Informationen zur lokalen Entwicklung finden Sie im folgenden Beispiel, in dem gezeigt wird, wie Sie einen Client für diesen Fall konfigurieren. Er konfiguriert einen Client, der eine Verbindung mit einem loopback Silo herstellt.
Fügen Sie das Microsoft.Orleans.Client NuGet-Metapaket zu Ihrem Projekt hinzu. Nachdem Sie sich mit der API vertraut gemacht haben, können Sie stattdessen die genauen Pakete auswählen, die Sie benötigen, und auf diese verweisen.
Install-Package Microsoft.Orleans.Client
Konfigurieren sie ClientBuilder mit einer Cluster-ID, die dem für das lokale Silo angegebenen entspricht. Wählen Sie statisches Clustering als Ihre Clusterauswahl und weisen Sie auf den Gateway-Port des Silos.
Der ConfigureApplicationParts Aufruf fügt explizit die Assembly, die Grain-Schnittstellen enthält, dem Anwendungssetup hinzu.
Nachdem Sie diese Schritte ausgeführt haben, erstellen Sie den Client, und rufen Sie dessen Connect() Methode auf, um eine Verbindung mit dem Cluster herzustellen.
Sie können ein leeres Konsolenanwendungsprojekt für .NET Framework 4.6.1 oder höher für die Ausführung eines Clients erstellen oder das Konsolenanwendungsprojekt wiederverwenden, das für das Hosten des Silos erstellt wurde.
Im Folgenden finden Sie ein Beispiel dafür, wie ein Client eine Verbindung mit einem lokalen Silo herstellen kann:
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();