ASP.NET Core SignalR を使用すべき状況

完了

SignalR は、リアルタイム Web 機能を提供します。 Contoso Pizza では、注文の状態と配送を追跡するためにライブ マップが必要です。 ピーク時の売上の損失により、チームはクライアント側のポーリングよりも優れたソリューションの調査を開始しています。

意思決定の基準

SignalR を選択すべき "でない" 状況を理解することは、それを選択すべき状況を理解することと同じくらい重要です。 リアルタイム Web 機能では、アプリのユーザー エクスペリエンスはその応答性に依存します。 アプリケーションのどの部分にリアルタイム更新が必要かを理解することが必要です。

SignalR を使用すべきで "ない" 状況

SignalR には、基になる接続と同じ耐久性しかありません。 つまり、クライアント アプリケーションの "接続性" に懸念すべき点がある場合、SignalR は最適な選択肢ではありません。

考慮すべきもう 1 つの点は、SignalR のスケーラビリティです。 同時接続されているクライアントの数によっては、その制限に達すると、Web サーバーで "リソースの競合" が発生する可能性があります。 このような状況では、アプリケーションをサーバー ファームにデプロイし、バックプレーンを使用する必要があります。 これを自分で実装するには、非常に時間がかかる場合があります。

または、Azure SignalR Service を使ってこの問題を解決できます。 あるいは、さまざまな回復性やディザスター リカバリーのメカニズムを利用して、この問題を軽減することもできます。

SignalR モダリティの例

SignalR は、オンプレミス、クラウド、または Azure SignalR Service で使用できます。

  • オンプレミス:

    Diagram of ASP.NET Core SignalR being used on-premises.

  • クラウド内:

    Diagram of ASP.NET Core SignalR being used in the cloud.

  • Azure SignalR Service:

    Diagram of using Azure SignalR Service.

有効なユース ケース

SignalR は、従来の HTTP 要求に代わるものではありません。 アプリケーションは、特定の HTTP 要求を実行するタイミングを認識するために SignalR を使用できます。 この方法では、相互に補完します。

SignalR の有効なユース ケースは数多くあります。 次のリストに、SignalR に適した候補を示します。

  • サーバーからの高頻度の更新が必要なアプリ:
    • ゲーム
    • ソーシャル ネットワーク
    • Voting
    • オークション
    • GPS アプリ
  • ダッシュボードと監視アプリ:
    • 会社のダッシュボード
    • ライブ マップ
    • インスタント セールス更新
    • 旅行のアラート
    • 継続的インテグレーション/継続的デリバリー (CI/CD) パイプライン ページ
  • コラボレーション型およびマルチユーザー対話型アプリ:
    • ホワイトボード アプリ
    • チーム会議アプリ
    • ドキュメント共有アプリ
    • Visual Studio Live Share
  • インスタント通知を必要とするアプリ:
    • 電子メール アプリ
    • チャット アプリ
    • ターンベースのゲーム
    • 時系列レポート
    • GitHub Actions、issue および pull request システム

Contoso Pizza のシナリオ

Contoso Pizza ライブ注文マップのクライアント側ポーリング ソリューションについて考えると、SignalR が実行可能な代替手段になる可能性があります。 プログラミングとアーキテクチャに関するすべての決定と同様に、SignalR の長所と短所を比較して検討することは非常に重要です。