Aracılığıyla paylaş


Dış parametreler

Ortamlar, uygulamanın çalışması için bağlam sağlar. Parametreler, uygulamayı çalıştırırken dış değer isteme özelliğini ifade eder. Parametreler, yerel olarak çalıştırılırken uygulamaya değer sağlamak veya dağıtım sırasında değer istemde bulunabilmek için kullanılabilir. Bunlar, gizli diziler, bağlantı dizeleri ve ortamlar arasında farklılık gösterebilecek diğer yapılandırma değerleri gibi çok çeşitli senaryoları modellemek için kullanılabilir.

Parametre değerleri

Parametre değerleri, uygulama konağı yapılandırmasının Parameters bölümünden okunur ve yerel olarak çalışırken uygulamaya değer sağlamak için kullanılır. Uygulamayı yayımladığınızda, değer yapılandırılmamışsa bunu sağlamanız istenir.

Aşağıdaki örnek uygulama konağı Program.cs dosyasını göz önünde bulundurun:

var builder = DistributedApplication.CreateBuilder(args);

// Add a parameter named "example-parameter-name"
var parameter = builder.AddParameter("example-parameter-name");

builder.AddProject<Projects.ApiService>("api")
       .WithEnvironment("ENVIRONMENT_VARIABLE_NAME", parameter);

Yukarıdaki kod, uygulama konağına example-parameter-name adlı bir parametre ekler. Parametresi daha sonra Projects.ApiService projesine ENVIRONMENT_VARIABLE_NAMEadlı bir ortam değişkeni olarak geçirilir.

Parametre değerlerini yapılandırma

Oluşturucuya parametre eklemek, yapılandırmanın yalnızca bir yönüdür. Parametresinin değerini de sağlamanız gerekir. Değer, uygulama ana bilgisayarı yapılandırma dosyasında sağlanabilir, kullanıcı gizli değeri olarak ayarlanabilir veya başka bir standart yapılandırma ile yapılandırılabilir. Parametre değerleri bulunamadığında, uygulama yayımlanırken bunlar istenir.

appsettings.jsonaşağıdaki uygulama ana bilgisayar yapılandırma dosyasını göz önünde bulundurun:

{
    "Parameters": {
        "example-parameter-name": "local-value"
    }
}

Önceki JSON, uygulama ana bilgisayar yapılandırmasının Parameters bölümünde bir parametreyi yapılandırır. Başka bir deyişle, bu uygulama ana bilgisayarı, parametreyi yapılandırıldığı gibi bulabilir. Örneğin, IDistributedApplicationBuilder.Configuration'ye gidip Parameters:example-parameter-name anahtarını kullanarak değere erişebilirsiniz.

var builder = DistributedApplication.CreateBuilder(args);

var key = $"Parameters:example-parameter-name";
var value = builder.Configuration[key]; // value = "local-value"

Önemli

Ancak, bu yapılandırma değerine uygulama ana bilgisayarında kendiniz erişmeniz gerekmez. Bunun yerine, parametre değerini bağımlı kaynaklara geçirmek için ParameterResource kullanılır. Çoğu zaman ortam değişkeni olarak kullanılır.

Bildirimde parametre gösterimi

.NET .NET Aspire, uygulamanın kaynaklarını ve ilişkilerini göstermek için dağıtım bildirimi kullanır. Parametreler bildirimde parameter.v0adlı yeni bir ilkel olarak temsil edilir:

{
  "resources": {
    "example-parameter-name": {
      "type": "parameter.v0",
      "value": "{value.inputs.value}",
      "inputs": {
        "value": {
          "type": "string"
        }
      }
    }
  }
}

Gizli değerler

Parametreler sırları modellemek için kullanılabilir. Bir parametre gizli dizi olarak işaretlendiğinde, bildirimde değerin gizli dizi olarak ele alınması gerektiğine ilişkin bir ipucu görevi görür. Uygulamayı yayımladığınızda, değerin girilmesi istenir ve güvenli bir konumda saklanır. Uygulamayı yerel olarak çalıştırdığınızda, değer uygulama ana bilgisayar yapılandırmasının Parameters bölümünden okunur.

Aşağıdaki örnek uygulama konağı Program.cs dosyasını göz önünde bulundurun:

var builder = DistributedApplication.CreateBuilder(args);

// Add a secret parameter named "secret"
var secret = builder.AddParameter("secret", secret: true);

builder.AddProject<Projects.ApiService>("api")
       .WithEnvironment("SECRET", secret);

builder.Build().Run();

Şimdi aşağıdaki uygulama ana bilgisayar yapılandırma dosyasını appsettings.jsongöz önünde bulundurun:

{
    "Parameters": {
        "secret": "local-secret"
    }
}

Bildirim gösterimi aşağıdaki gibidir:

{
  "resources": {
    "value": {
      "type": "parameter.v0",
      "value": "{value.inputs.value}",
      "inputs": {
        "value": {
          "type": "string",
          "secret": true
        }
      }
    }
  }
}

Bağlantı dizesi değerleri

Parametreler, bağlantı dizelerini modellemek için kullanılabilir. Uygulamayı yayımladığınızda, değerin girilmesi istenir ve güvenli bir konumda saklanır. Uygulamayı yerel olarak çalıştırdığınızda, değer uygulama ana bilgisayar yapılandırmasının ConnectionStrings bölümünden okunur.

Uyarı

Bağlantı dizeleri veritabanı bağlantıları, ileti aracıları, uç nokta URI'leri ve diğer hizmetler gibi çok çeşitli bağlantı bilgilerini temsil etmek için kullanılır. .NET .NET Aspire sıfatında, her tür bağlantı bilgisini temsil etmek için "bağlantı dizesi" terimi kullanılır.

Aşağıdaki örnek uygulama konağı Program.cs dosyasını göz önünde bulundurun:

var builder = DistributedApplication.CreateBuilder(args);

var redis = builder.AddConnectionString("redis");

builder.AddProject<Projects.WebApplication>("api")
       .WithReference(redis)
       .WaitFor(redis);

builder.Build().Run();

Uyarı

WaitFor Bağlantı dizesiyle kullanmak, bağlantı dizesinin bağlanacağı kaynağı örtük olarak bekler.

Şimdi aşağıdaki uygulama ana bilgisayar yapılandırma dosyasını appsettings.jsongöz önünde bulundurun:

{
    "ConnectionStrings": {
        "redis": "local-connection-string"
    }
}

Bağlantı dizeleriyle ve bunların dağıtım bildirimindeki gösterimiyle ilgili daha fazla bilgi için bkz.Bağlantı dizesi ve bağlama başvuruları .

Başvuru ifadeleriyle bağlantı dizeleri oluşturma

Parametrelerden bir bağlantı dizesi oluşturmak ve hem geliştirme hem de üretimde doğru şekilde işlenmiş olduğundan emin olmak istiyorsanız, ile kullanın AddConnectionStringReferenceExpression.

Örneğin, bağlantı dizesinin küçük bir bölümünü depolayan bir gizli dizi parametreniz varsa, eklemek için şu kodu kullanın:

var secretKey = builder.AddParameter("secretkey", secret: true);

var connectionString = builder.AddConnectionString(
    "composedconnectionstring",
    ReferenceExpression.Create($"Endpoint=https://api.contoso.com/v1;Key={secretKey}"));

builder.AddProject<Projects.AspireReferenceExpressions_CatalogAPI>("catalogapi")
       .WithReference(connectionString)
       .WaitFor(connectionString);

Kaynaklar tarafından .NET.NET Aspire oluşturulan bağlantı dizelerine metin eklemek için başvuru ifadelerini de kullanabilirsiniz. Örneğin, çözümünüze .NET Aspire bir PostgreSQL kaynak eklediğinizde, veritabanı sunucusu bir kapsayıcıda çalışır ve bunun için bir bağlantı dizesi formüle edilir. Aşağıdaki kodda, ek özellik Include Error Details , kullanan projelere geçirilmeden önce bu bağlantı dizesine eklenir:

var postgres = builder.AddPostgres("postgres");
var database = postgres.AddDatabase("db");

var pgConnectionString = builder.AddConnectionString(
    "pgdatabase",
    ReferenceExpression.Create($"{database};Include Error Details=true"));

builder.AddProject<Projects.AspireReferenceExpressions_CustomerAPI>("customerapi")
       .WithReference(pgConnectionString)
       .WaitFor(pgConnectionString);

Parametre örneği

Bir parametreyi ifade etmek için aşağıdaki örnek kodu göz önünde bulundurun:

var builder = DistributedApplication.CreateBuilder(args);

var db = builder.AddSqlServer("sql")
                .PublishAsConnectionString()
                .AddDatabase("db");

var insertionRows = builder.AddParameter("insertionRows");

builder.AddProject<Projects.Parameters_ApiService>("api")
       .WithEnvironment("InsertionRows", insertionRows)
       .WithReference(db);

builder.Build().Run();

Aşağıdaki adımlar gerçekleştirilir:

  • SQL Server adlı bir sql kaynağı ekler ve bunu bağlantı dizesi olarak yayımlar.
  • dbadlı bir veritabanı ekler.
  • insertionRowsadlı bir parametre ekler.
  • api adlı bir proje ekler ve bunu Projects.Parameters_ApiService proje kaynak türü-parametresiyle ilişkilendirir.
  • insertionRows parametresini api projesine geçirir.
  • db veritabanına başvurur.

insertionRows parametresinin değeri, Parametersuygulama ana bilgisayar yapılandırma dosyasının appsettings.json bölümünden okunur:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Aspire.Hosting.Dcp": "Warning"
    }
  },
  "Parameters": {
    "insertionRows": "1"
  }
}

Parameters_ApiService projesi insertionRows parametresini tüketir. Program.cs örnek dosyasını göz önünde bulundurun:

using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

int insertionRows = builder.Configuration.GetValue<int>("InsertionRows", 1);

builder.AddServiceDefaults();

builder.AddSqlServerDbContext<MyDbContext>("db");

var app = builder.Build();

app.MapGet("/", async (MyDbContext context) =>
{
    // You wouldn't normally do this on every call,
    // but doing it here just to make this simple.
    context.Database.EnsureCreated();

    for (var i = 0; i < insertionRows; i++)
    {
        var entry = new Entry();
        await context.Entries.AddAsync(entry);
    }

    await context.SaveChangesAsync();

    var entries = await context.Entries.ToListAsync();

    return new
    {
        totalEntries = entries.Count,
        entries
    };
});

app.Run();

Ayrıca bkz.