.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
项目的资源。