共用方式為


.NET .NET Aspire 服務探索

在本文中,您將瞭解服務探索在 .NET.NET Aspire 專案中的運作方式。 .NET .NET Aspire 包含於開發和測試階段設定服務發現的功能。 服務探索功能的運作方式是將設定以 組態型端點解析程式所預期的格式,從 .NET.NET Aspire AppHost 專案 提供給新增至應用程式模型的個別服務專案。 如需詳細資訊,請參閱 中的 服務探索。

透過引用進行隱式服務探索

服務探索的組態只會針對指定專案所參考的服務新增。 例如,請考慮下列 AppHost 程式:

var builder = DistributedApplication.CreateBuilder(args);

var catalog = builder.AddProject<Projects.CatalogService>("catalog");
var basket = builder.AddProject<Projects.BasketService>("basket");

var frontend = builder.AddProject<Projects.MyFrontend>("frontend")
                      .WithReference(basket)
                      .WithReference(catalog);

在上述範例中,前端 項目會參考 目錄 專案和 購物籃 專案。 這兩個 WithReference 呼叫會指示 .NET.NET Aspire 項目將參考專案的服務探索資訊(目錄籃子)傳遞至 前端 專案。

具名端點

某些服務會公開多個具名端點。 在 HTTP 請求 URI 的主機部分中指定具名端點名稱,即可依據 scheme://_endpointName.serviceName格式來解析這些端點。 例如,如果名為 「basket」 的服務公開名為 「dashboard」 的端點,則可以使用 URI scheme+http://_dashboard.basket 來指定此端點,例如:

builder.Services.AddHttpClient<BasketServiceClient>(
    static client => client.BaseAddress = new("https+http://basket"));

builder.Services.AddHttpClient<BasketServiceDashboardClient>(
    static client => client.BaseAddress = new("https+http://_dashboard.basket"));

在上述範例中,會新增兩個 HttpClient 類別,一個用於核心購物籃服務,另一個用於購物籃服務的儀錶板。

通過使用組態設定具名端點

使用以組態為基礎的端點解析程式,即可在組態中指定具名端點,方法是在端點值前面加上 _endpointName.,其中 endpointName 是端點名稱。 例如,請考慮此設定 appsettings.json 定義預設端點(不含名稱)和名為 「dashboard」 的端點:

{
  "Services": {
    "basket":
      "https": "https://10.2.3.4:8080", /* the https endpoint, requested via https://basket */
      "dashboard": "https://10.2.3.4:9999" /* the "dashboard" endpoint, requested via https://_dashboard.basket */
    }
  }
}

在前述 JSON中:

  • 剖析 https://basket 時的預設端點是 10.2.3.4:8080
  • 經由 https://_dashboard.basket 解析的「儀錶板」端點是 10.2.3.4:9999

.NET .NET Aspire 中的具名端點

var basket = builder.AddProject<Projects.BasketService>("basket")
    .WithHttpsEndpoint(hostPort: 9999, name: "dashboard");

在 Kubernetes 中使用 DNS SRV 命名的端點

部署至 Kubernetes時,DNS SRV 服務端點解析程式可用來解析具名端點。 例如,下列資源定義會導致針對名為 “default” 的端點和名為 “dashboard” 的端點建立 DNS SRV 記錄,這兩者都位於名為 “basket” 的服務上。

apiVersion: v1
kind: Service
metadata:
  name: basket
spec:
  selector:
    name: basket-service
  clusterIP: None
  ports:
  - name: default
    port: 8080
  - name: dashboard
    port: 9999

若要設定服務以解析「購物籃」服務上的「儀錶板」端點,請將 DNS SRV 服務端點解析程式新增至主機產生器,如下所示:

builder.Services.AddServiceDiscoveryCore();
builder.Services.AddDnsSrvServiceEndpointProvider();

如需詳細資訊,請參閱 AddServiceDiscoveryCoreAddDnsSrvServiceEndpointProvider

特殊埠名稱 「default」 可用來指定預設端點,並使用 URI https://basket解析。

如上一個範例所示,將服務探索新增至購物籃服務的 HttpClient

builder.Services.AddHttpClient<BasketServiceClient>(
    static client => client.BaseAddress = new("https://basket"));

同樣地,「儀錶板」界面的目標可以如下設定:

builder.Services.AddHttpClient<BasketServiceDashboardClient>(
    static client => client.BaseAddress = new("https://_dashboard.basket"));

另請參閱