Aracılığıyla paylaş


.NET .NET Aspire ve başlatma profilleri

.NET .NET Aspire, .NET.NET Aspiretabanlı dağıtılmış uygulamalar için hata ayıklama ve yayımlama deneyiminin birden çok yönünü yapılandırma işlemini basitleştirmek için hem uygulama ana bilgisayarında hem de hizmet projelerinde tanımlanan başlatma profillerini kullanır.

Başlatma profili temel bilgileri

Şablon geliştiricilerinden yeni bir .NET uygulaması oluştururken genellikle launchSettings.jsonadlı bir dosya içeren bir Properties dizini görür. Başlatma ayarları dosyası,başlatma profillerinin listesini içerir. Her başlatma profili, uygulamanızı dotnet ile başlatmak istediğinizde kullanacağınız ilgili seçeneklerin bir koleksiyonudur.

Aşağıdaki kod, bir ASP.NET Core uygulaması için launchSettings.json dosyasındaki başlatma profilleri örneğidir.

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": false,
      "applicationUrl": "http://localhost:5130",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": false,
      "applicationUrl": "https://localhost:7106;http://localhost:5130",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Yukarıdaki launchSettings.json dosyası, iki başlatma profili, http ve httpstanımlar. Her birinin kendi ortam değişkenleri, başlatma URL'leri ve diğer seçeneklerinden oluşan bir kümesi vardır. .NET Core uygulaması başlatılırken geliştiriciler hangi başlatma profilinin kullanılacağını seçebilir.

dotnet run --launch-profile https

Hiçbir başlatma profili belirtilmezse, varsayılan olarak ilk başlatma profili seçilir. --no-launch-profile seçeneğini kullanarak bir .NET Core uygulamasını başlatma profili olmadan başlatmak mümkündür. launchSettings.json dosyasındaki bazı alanlar ortam değişkenlerine çevrilir. Örneğin, applicationUrl alanı, hangi adresin ve bağlantı noktasının ASP.NET Core bağlandığını denetleyen ASPNETCORE_URLS ortam değişkenine dönüştürülür.

Visual Studio'da uygulamayı başlatırken başlatma profilini seçmek mümkündür ve bu da sorunlarda el ile hata ayıklarken yapılandırma senaryoları arasında geçiş yapmayı kolaylaştırır:

Başlatma profili seçicinin vurgulandığı Visual Studio standart araç çubuğunun ekran görüntüsü.

Bir .NET uygulaması başlatma profiliyle başlatıldığında, DOTNET_LAUNCH_PROFILE adlı özel bir ortam değişkeni, işlemi başlatırken kullanılan başlatma profilinin adıyla doldurulur.

.NET .NET Aspire uygulama barındırıcı için profil başlatma

.NET AspireAppHost yalnızca bir .NET uygulamadır. Sonuç olarak, diğer tüm uygulamalar gibi bir launchSettings.json dosyası vardır. Burada, başlangıç şablonundan (dotnet new aspire-starter) yeni bir .NET.NET Aspire projesi oluşturulurken oluşturulan launchSettings.json dosyasının bir örneği verilmiştir.

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "profiles": {
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:17134;http://localhost:15170",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057"
      }
    },
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15170",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19240",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20154"
      }
    }
  }
}

şablonları, normal bir uygulamasına çok benzer bir başlatma profili kümesine sahiptir. .NET .NET Aspire uygulama projesi başlatıldığında, bir DistributedApplication oluşturur ve .NET Aspire Panosu'nun, .NET Aspiretarafından orkestrasyonu yapılan kaynaklar hakkındaki bilgileri almak için kullandığı bir web sunucusunu barındırır.

Uygulama ana bilgisayar yapılandırma seçenekleri hakkında bilgi için bkz. uygulama ana bilgisayar yapılandırması.

Uygulama ana bilgisayar başlatma profilleri ve hizmet projeleri arasındaki ilişki

.NET .NET Aspire'de uygulama konağı birden çok hizmet projesinin başlatılmasını koordine etmekle sorumludur. Uygulama ana bilgisayarını komut satırı aracılığıyla veya Visual Studio (veya başka bir geliştirme ortamından) çalıştırdığınızda, uygulama konağı için bir başlatma profili seçilir. Buna karşılık, uygulama ana bilgisayarı başlattığı hizmet projelerinde eşleşen bir başlatma profili bulmaya çalışır ve bu seçenekleri kullanarak hizmet projesi için ortamı ve varsayılan ağ yapılandırmasını denetler.

Uygulama konağı bir hizmet projesi başlattığında, --launch-profile seçeneğini kullanarak hizmet projesini başlatmaz. Bu nedenle, hizmet projeleri için DOTNET_LAUNCH_PROFILE ortam değişkeni kümesi olmayacaktır. Bunun nedeni, .NET.NET AspireASPNETCORE_URLS ortam değişkenini (başlatma profilindeki applicationUrl alanından türetilmiş) farklı bir bağlantı noktası kullanacak şekilde değiştirmesidir. Varsayılan olarak, .NET AspireWithReplicas yöntemini kullanarak uygulamanın birden çok örneğine izin vermek için ASP.NET Core uygulamasının önüne ters proxy ekler.

environmentVariables alanındaki seçenekler gibi diğer ayarlar, değişiklik yapılmadan uygulamaya geçirilir.

Başlatma profili seçimini denetleme

İdeal olarak, uygulama konağı tarafından eşgüdümlü tüm projelerde aynı anda yapılandırma seçenekleri arasında geçiş yapmayı kolaylaştırmak için başlatma profili adlarını uygulama konağıyla hizmet projeleri arasında hizalamak mümkündür. Ancak, belirli bir projenin kullandığı başlatma profilini denetlemek istenebilir. AddProject uzantısı yöntemi bunu yapmak için bir mekanizma sağlar.

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
    "inventoryservice",
    launchProfileName: "mylaunchprofile");

Yukarıdaki kod, inventoryservice kaynağının (.NET bir proje) mylaunchprofile başlatma profilindeki seçenekler kullanılarak başlatıldığını gösterir. Başlatma profili öncelik mantığı aşağıdaki gibidir:

  1. Belirtildiyse launchProfileName bağımsız değişkeni tarafından belirtilen başlatma profilini kullanın.
  2. AppHost'un adıyla aynı olan başlatma profilini kullanın (bu, DOTNET_LAUNCH_PROFILE ortam değişkeni okunarak belirlenir).
  3. launchSettings.json'da varsayılan (ilk) başlatma profilini kullanın.
  4. Başlatma profili kullanmayın.

Bir hizmet projesini başlatma profili olmadan başlatmaya zorlamak için launchProfileName yöntemindeki AddProject bağımsız değişkeni null olarak ayarlanabilir.

Profilleri ve uç noktaları başlatma

Uygulama konağına bir ASP.NET Core projesi eklerken .NET Aspire uygun başlatma profilini seçerek launchSettings.json dosyasını ayrıştıracak ve applicationUrl alanında bulunan URL'lere göre uygulama modelinde otomatik olarak uç noktalar oluşturacaktır. WithEndpoint genişletme yöntemine otomatik olarak enjekte edilen uç noktaları değiştirmek için.

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
       .WithEndpoint("https", endpoint => endpoint.IsProxied = false);

Yukarıdaki kod, .NET Aspire'ın .NET Core uygulaması için dağıttığı ters proxy'nin nasıl devre dışı bırakılacağını ve bunun yerine .NET Core uygulamasının HTTP(S) üzerinden yapılan isteklerde doğrudan yanıt vereceğini gösterir. içindeki ağ seçenekleri hakkında daha fazla bilgi için bkz. iç döngü ağına genel bakış.

Ayrıca bkz.

  • Kestrel tarafından yapılandırılmış uç noktaları