.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
Необходимо установить 📦 MicrosoftAzure.SignalR пакет NuGet.
dotnet add package Microsoft.Azure.SignalR
Дополнительные сведения см. в статье dotnet add package или Управление зависимостями пакетов в .NET applications.
Выразить ресурс
В каком бы проекте вы ни размещали свой 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
.
См. также
.NET Aspire