Aracılığıyla paylaş


İstemci yapılandırması

Bir IHostBuilder ve birkaç ek seçenek sınıfı aracılığıyla programlı olarak bir silo kümesine bağlanmak ve taneciklere istek göndermek için bir istemci yapılandırın. Silo seçenekleri gibi istemci seçeneği sınıfları da .NET'teki Seçenekler desenini izler.

Bir ClientBuilder ve birkaç ek seçenek sınıfı aracılığıyla programlı olarak bir silo kümesine bağlanmak ve taneciklere istek göndermek için bir istemci yapılandırın. Silo seçenekleri gibi istemci seçeneği sınıfları da .NET'teki Seçenekler desenini izler.

Tavsiye

Yalnızca geliştirme amacıyla yerel bir silo ve yerel istemci başlatmak istiyorsanız bkz. Yerel geliştirme yapılandırması.

Tavsiye

.NET Aspire kullanıyorsanız istemci yapılandırması otomatik olarak işlenir. Aspire, ortam değişkenleri aracılığıyla , ClusterIdve kümeleme sağlayıcısı ayarlarını eklerServiceId, böylece daha basit parametresiz UseOrleansClient yöntemi kullanabilirsiniz. Önerilen yaklaşım için bkz Orleans . ve .NET Aspire tümleştirmesi .

Orleans NuGet paketini istemci projenize ekleyin.

İstemci yapılandırmasının birkaç önemli yönü vardır:

  • Orleans kümeleme bilgileri
  • Kümeleme sağlayıcısı
  • Uygulama bölümleri

İstemci yapılandırması örneği:

TokenCredential kullanarak bir hizmet URI'si kullanmak önerilen yaklaşımdır. Bu düzen, gizli dizilerin yapılandırmada depolanmasını önler ve güvenli kimlik doğrulaması için Microsoft Entra Id'yi kullanır.

DefaultAzureCredential yerel geliştirme ve üretim ortamlarında sorunsuz çalışan bir kimlik bilgisi zinciri sağlar. Geliştirme sırasında Azure CLI veya Visual Studio kimlik bilgilerinizi kullanır. Azure'daki üretimde, kaynağınıza atanan yönetilen kimliği otomatik olarak kullanır.

Tavsiye

DefaultAzureCredential yerel geliştirme ve üretim genelinde sorunsuz çalışır. Geliştirme aşamasında Azure CLI veya Visual Studio kimlik bilgilerinizi kullanır. Azure'daki üretimde otomatik olarak kaynağın yönetilen kimliğini kullanır. Üretimde performans ve hata ayıklama yeteneğini artırmak için bunu ManagedIdentityCredential gibi belirli bir kimlik bilgisiyle değiştirmeyi düşünün. Daha fazla bilgi için bkz . DefaultAzureCredential kullanım kılavuzu.

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();
}

Şimdi bu örnekte kullanılan adımları ayıralım:

Orleans kümeleme bilgileri

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

Burada iki şey ayarlayacağız:

  • ClusterOptions.ClusterId'den "my-first-cluster"'ye: Bu, Orleans kümesi için benzersiz bir kimliktir. Bu kimliği kullanan tüm istemciler ve silolar doğrudan birbirleriyle konuşabilir. Bazıları, her dağıtım için farklı bir ClusterId kullanmayı seçebilir, örneğin.
  • ClusterOptions.ServiceId ile "AspNetSampleApp" kimliği: Bu, uygulamanız için bazı sağlayıcılar (örneğin, kalıcılık sağlayıcıları) tarafından kullanılan benzersiz bir kimliktir. Bu kimlik kurulumlar arasında istikrarlı kalmalıdır.

Kümeleme sağlayıcısı

Tavsiye

DefaultAzureCredential yerel geliştirme ve üretim genelinde sorunsuz çalışır. Geliştirme aşamasında Azure CLI veya Visual Studio kimlik bilgilerinizi kullanır. Azure'daki üretimde otomatik olarak kaynağın yönetilen kimliğini kullanır. Üretimde performans ve hata ayıklama yeteneğini artırmak için bunu ManagedIdentityCredential gibi belirli bir kimlik bilgisiyle değiştirmeyi düşünün. Daha fazla bilgi için bkz . DefaultAzureCredential kullanım kılavuzu.

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));
}

İstemci, bu sağlayıcıyı kullanarak kümedeki tüm kullanılabilir ağ geçitlerini bulur. Çeşitli sağlayıcılar mevcuttur; burada Azure Tablo sağlayıcısını kullanırız.

Daha fazla bilgi için bkz . Sunucu yapılandırması.

Uygulama bölümleri

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

Daha fazla bilgi için bkz . Sunucu yapılandırması.