.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.NuGet パッケージをSignalR、インストールしてください。
dotnet add package Microsoft.Azure.SignalR
詳細については、「dotnet パッケージ の追加」または「.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
プロジェクトによって参照されます。
関連項目
.NET Aspire