次の方法で共有


.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 プロジェクトによって参照されます。

関連項目