Clientkonfiguration

Konfigurieren Sie einen Client, um eine Verbindung mit einem Cluster von Silos herzustellen und programmgesteuert Anfragen über eine IHostBuilder und mehrere zusätzliche Optionsklassen an Grains zu senden. Wie Silo-Optionen folgen auch die Client-Optionsklassen dem Optionen-Muster in .NET.

Konfigurieren Sie einen Client, um eine Verbindung mit einem Cluster von Silos herzustellen und programmgesteuert Anfragen über eine ClientBuilder und mehrere zusätzliche Optionsklassen an Grains zu senden. Wie Silo-Optionen folgen auch die Client-Optionsklassen dem Optionen-Muster in .NET.

Tipp

Wenn Sie nur ein lokales Silo und einen lokalen Client für Entwicklungszwecke starten möchten, lesen Sie die Konfiguration der lokalen Entwicklung.

Tipp

Wenn Sie Aspire verwenden, wird die Clientkonfiguration automatisch vorgenommen. Aspire injiziert ClusterIdServiceId, und die Clustering-Anbietereinstellungen werden über Umgebungsvariablen bereitgestellt, sodass Sie die einfachere parameterlose UseOrleansClient-Methode nutzen können. Siehe Orleans und Aspire Integration für den empfohlenen Ansatz.

Fügen Sie das Microsoft.Orleans.Clustering.AzureStorage NuGet-Paket zu Ihrem Clientprojekt hinzu.

Es gibt mehrere wichtige Aspekte der Clientkonfiguration:

  • Orleans Clusterinformationen
  • Clusteringanbieter
  • Teile der Anwendung

Beispiel für eine Clientkonfiguration:

Die Verwendung einer TokenCredential-Dienst-URI ist der empfohlene Ansatz. Dieses Muster verhindert das Speichern geheimer Schlüssel in der Konfiguration und nutzt die Microsoft Entra-ID für die sichere Authentifizierung.

DefaultAzureCredential bietet eine Berechtigungskette, die nahtlos über lokale Entwicklungs- und Produktionsumgebungen hinweg funktioniert. Während der Entwicklung werden Ihre Azure CLI- oder Visual Studio-Anmeldeinformationen verwendet. In der Produktion in Azure verwendet sie automatisch die verwaltete Identität, die Ihrer Ressource zugewiesen ist.

Tipp

DefaultAzureCredential funktioniert nahtlos sowohl in der lokalen Entwicklung als auch in der Produktion. In der Entwicklung werden Ihre Azure CLI- oder Visual Studio-Anmeldeinformationen verwendet. In der Produktion in Azure verwendet sie automatisch die verwaltete Identität der Ressource. Um die Leistung und Debugging-Fähigkeit in der Produktion zu verbessern, sollten Sie sie durch bestimmte Anmeldeinformationen ersetzen, wie z. B. ManagedIdentityCredential. Weitere Informationen finden Sie unter Verwendungsleitfaden für DefaultAzureCredential.

using Azure.Identity;

var builder = Host.CreateApplicationBuilder(args);
builder.UseOrleansClient(clientBuilder =>
{
    clientBuilder.Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "my-first-cluster";
        options.ServiceId = "MyOrleansService";
    })
    .UseAzureStorageClustering(options =>
    {
        options.ConfigureTableServiceClient(
            new Uri("https://<your-storage-account>.table.core.windows.net"),
            new DefaultAzureCredential());
    });
});

using var host = builder.Build();
await host.StartAsync();
public static async Task ConfigureClient(string connectionString)
{
    var client = new ClientBuilder()
        .Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "my-first-cluster";
            options.ServiceId = "MyOrleansService";
        })
        .UseAzureStorageClustering(
            options => options.ConfigureTableServiceClient(connectionString))
        .ConfigureApplicationParts(
            parts => parts.AddApplicationPart(
                typeof(IValueGrain).Assembly))
        .Build();

    await client.Connect();
}

Lassen Sie uns die in diesem Beispiel verwendeten Schritte aufschlüsseln:

Orleans Clusterinformationen

    .Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "orleans-docker";
        options.ServiceId = "AspNetSampleApp";
    })

Hier legen wir zwei Dinge fest:

  • ClusterOptions.ClusterId auf "my-first-cluster": Dies ist eine eindeutige ID für den Orleans-Cluster. Alle Kunden und Silos, die diese ID verwenden, können direkt miteinander kommunizieren. Einige Benutzer könnten z. B. für jede Bereitstellung eine andere ClusterId verwenden.
  • ClusterOptions.ServiceId auf "AspNetSampleApp": Dies ist eine eindeutige ID für Ihre Anwendung, die von einigen Anbietern verwendet wird (z. B. Persistenzanbieter). Diese ID sollte für alle Bereitstellungen stabil bleiben.

Clusteringanbieter

Tipp

DefaultAzureCredential funktioniert nahtlos sowohl in der lokalen Entwicklung als auch in der Produktion. In der Entwicklung werden Ihre Azure CLI- oder Visual Studio-Anmeldeinformationen verwendet. In der Produktion in Azure verwendet sie automatisch die verwaltete Identität der Ressource. Um die Leistung und Debugging-Fähigkeit in der Produktion zu verbessern, sollten Sie sie durch bestimmte Anmeldeinformationen ersetzen, wie z. B. ManagedIdentityCredential. Weitere Informationen finden Sie unter Verwendungsleitfaden für DefaultAzureCredential.

clientBuilder.UseAzureStorageClustering(options =>
{
    options.ConfigureTableServiceClient(
        new Uri("https://<your-storage-account>.table.core.windows.net"),
        new DefaultAzureCredential());
});
public static void ConfigureAzureClustering(IClientBuilder clientBuilder, string connectionString)
{
    clientBuilder.UseAzureStorageClustering(
        options => options.ConfigureTableServiceClient(connectionString));
}

Der Client ermittelt alle verfügbaren Gateways im Cluster mithilfe dieses Anbieters. Es stehen mehrere Anbieter zur Verfügung; hier verwenden wir den Azure Table-Anbieter.

Weitere Informationen finden Sie unter Serverkonfiguration.

Teile der Anwendung

public static void ConfigureApplicationParts(IClientBuilder clientBuilder)
{
    clientBuilder.ConfigureApplicationParts(
        parts => parts.AddApplicationPart(
            typeof(IValueGrain).Assembly)
            .WithReferences());
}

Weitere Informationen finden Sie unter Serverkonfiguration.