.NET Aspire 对 AzureAzure SignalR Service 的支持

本文介绍如何使用 .NET Aspire 来表达 AzureAzure SignalR Service 资源。 演示如何编写 SignalR 应用超出了本文的范围。 相反,您可以探索一个已经开发好的应用程序,并了解它与 .NET.NET Aspire的连接方式。 与 Azure.NET Aspire中的其他 资源一样,可以使用 Azure Developer CLI(azd)进行简单的预配和部署。 有关详细信息,请参阅 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 项目的资源。

另请参阅