共用方式為


.NET Aspire 支援 AzureAzure SignalR Service

在本文中,您將瞭解如何使用 .NET Aspire 來表示 AzureAzure SignalR Service 資源。 示範如何撰寫 SignalR 應用程式已超出本文的範圍。 相反地,您會探索已撰寫的應用程式,以及其如何與 .NET.NET Aspire連線。 如同 Azure應用程式模型內的其他 .NET Aspire 資源,您可以使用 Azure Developer CLI (azd) 輕鬆布建和部署。 如需詳細資訊,請參閱 將 .NET Aspire 專案部署到 Azure Container Apps 並使用 azd (詳細指南)

中樞主機

中樞主機專案是您用來托管 SignalR 中樞的專案,例如呼叫 AddSignalR()MapHub 的專案。

安裝 NuGet 套件

您需要安裝 📦 Microsoft。Azure。SignalR NuGet 套件。

dotnet add package Microsoft.Azure.SignalR

如需詳細資訊,請參閱 dotnet add package管理 .NET 應用程式中的套件相依性

表達資源

無論您使用哪個項目來托管 Hub,您都會在其中連接 AzureAzure SignalR Service 資源。 下列範例示範如何使用鏈接到 AddNamedAzureSignalR 方法的 AddSignalR 擴充方法:

var builder = WebApplication.CreateBuilder(args);

builder.AddServiceDefaults();

builder.Services.AddProblemDetails();

builder.Services.AddSignalR()
                .AddNamedAzureSignalR("signalr");

var app = builder.Build();

app.UseExceptionHandler();

app.MapHub<ChatHub>(HubEndpoints.ChatHub);

app.MapDefaultEndpoints();

app.Run();

呼叫 AddNamedAzureSignalR 會新增具有指定名稱的 AzureSignalR,連接字串將會從 ConnectionStrings_{name}讀取,這些設定會從 Azure:SignalR:{name} 區段載入。

應用程式主機

應用程式主專案中,您可以使用 AzureSignalRResource 方法來表示 AddAzureSignalR。 下列範例示範使用者專案如何參考資源,在此案例中為 Hub 主專案。

var builder = DistributedApplication.CreateBuilder(args);

var signalr = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureSignalR("signalr")
    : builder.AddConnectionString("signalr");

var apiService = builder.AddProject<Projects.SignalR_ApiService>("apiservice")
                        .WithReference(signalr);
  
builder.AddProject<Projects.SignalR_Web>("webfrontend")
       .WithReference(apiService);

builder.Build().Run();

在上述程式代碼中:

  • builder 的執行環境已被檢查,以確認是否處於發佈模式。
  • 當發佈時,會呼叫 AddAzureSignalR 方法來表示 AzureSignalRResource
  • 未發佈時,會呼叫 AddConnectionString 方法來將 IResourceWithConnectionString 傳達給現有資源。
  • signalr 資源由 Hub 主機項目參考,在這個例子中稱為 apiService
  • apiService 項目資源被 SignalR_Web 項目引用。

另請參閱