Azure SignalR サービスとは
Azure SignalR サービスは、リアルタイムの Web 機能を HTTP 経由でアプリケーションに追加するプロセスを簡略化します。 このリアルタイム機能は、サービスが、接続されているクライアントにシングル ページ Web やモバイル アプリケーションなどのコンテンツの更新をプッシュできるようにします。 その結果、クライアントは、サーバーをポーリングしたり更新プログラムについて新しい HTTP 要求を送信したりしなくても更新されます。
この記事では、Azure SignalR サービスの概要について説明します。
Azure SignalR サービスの用途
サーバーからクライアントにリアルタイムでデータをプッシュする必要があるすべてのシナリオで Azure SignalR Service を使用できます。
サーバーからのポーリングが頻繁に必要とされる、従来のリアルタイム機能も Azure SignalR Service を使用できます。
Azure SignalR Service は、リアルタイムでのコンテンツ更新を必要とするあらゆる種類のアプリケーションのために、さまざまな業界で使用されています。 次に、Azure SignalR Service を使用できる例をいくつか示します。
- 頻度の高いデータの更新: ゲーム、投票、ポーリング、オークション。
- ダッシュボードと監視: 会社のダッシュボード、金融市場のデータ、売上の即時更新、マルチプレイヤー ゲームのスコア ボード、IoT 監視。
- チャット: ライブ チャット ルーム、チャット ボット、オンライン カスタマー サポート、リアルタイムのショッピング アシスタント、メッセンジャー、ゲーム内チャット。
- 地図上のリアルタイムの位置: 物流の追跡、配送状態の追跡、輸送状態の更新、GPS アプリ。
- 対象を絞ったリアルタイムの広告: パーソナライズされたリアルタイムのプッシュ型広告およびオファー、対話型広告。
- コラボレーション アプリ: 共同作成、ホワイトボード アプリ、チーム会議ソフトウェア。
- プッシュ通知: ソーシャル ネットワーク、メール、ゲーム、移動に関するアラート。
- リアルタイムのブロードキャスト: ライブ オーディオ/ビデオのブロードキャスト、ライブ キャプション、翻訳、イベントおよびニュースのブロードキャスト。
- IoT デバイスおよび接続されているデバイス: リアルタイムの IoT メトリック、リモート制御、リアルタイムの状態、および場所の追跡。
- オートメーション: アップストリーム イベントからのリアルタイム トリガー。
Azure SignalR Service を使用する利点とは
標準ベース:
SignalR では、リアルタイム Web アプリケーションのビルドに使用される多くの手法の抽象化が提供されます。 WebSocket が最適なトランスポートですが、他のオプションを使用できないときは、Server-Sent Events (SSE) や長いポーリングなどの他の手法が使用されます。 SignalR はサーバーとクライアントでサポートされる機能に基づいて、適切なトランスポートを自動的に検出し、初期化します。
ネイティブ ASP.NET Core のサポート:
SignalR Service では、ASP.NET Core と ASP.NET によるネイティブ プログラミングを使用できます。 SignalR Service を使用して新しい SignalR アプリケーションを開発する場合も、既存の SignalR ベースのアプリケーションから SignalR Service に移行する場合も、必要な労力は最小限です。 SignalR Service は、ASP.NET Core の新しい機能であるサーバー側 Blazor もサポートしています。
広範なクライアントのサポート:
SignalR Service は、次のような幅広いクライアントと連携します。
- Web およびモバイル ブラウザー
- デスクトップ アプリ
- モバイル アプリ
- IoT デバイス
- ゲーム コンソール
複数の言語サポート:
SignalR Service では、さまざまな言語の SDK が提供されています。
- クライアント側: SignalR プロトコルをサポートするすべてのクライアント ライブラリに、SignalR Service との互換性があります。
- サーバー側: ASP.NET Core または ASP.NET Web アプリケーション
- REST API、Azure Functions のトリガーとバインド、ASP.NET Core SignalR の Event Grid 統合によるサーバーレス サポート。
大規模なクライアント接続を処理:
SignalR Service は、大規模なリアルタイム アプリケーション向けに設計されています。 SignalR Service により、数百万のクライアント接続に対応するために複数のインスタンスが連携して動作できます。 このサービスは、シャーディング、高可用性、ディザスター リカバリーの目的で、複数のグローバル リージョンもサポートしています。
SignalR をセルフホストする負担を解消:
SignalR Service に切り替えると、セルフホスト型の SignalR アプリケーションと比較して、スケーリングとクライアント接続を処理するバックプレーンを管理する必要がなくなります。 また、このフル マネージド サービスにより、Web アプリケーションが簡素化され、ホスティングのコストを削減できます。 SignalR Service では、グローバルに展開する最高水準のデータ センターとネットワークを提供しており、数百万の接続に合わせてスケーリングし、Azure の標準のコンプライアンスとセキュリティを実現します。
SignalR Service では、Azure Functions および Event Grid との統合により、サーバーベースの構成とサーバーレス環境の両方がサポートされます。
さまざまなメッセージング パターンに対応する豊富な API を提供:
SignalR Service により、サーバーは、特定の接続やすべての接続にメッセージを送信すること、または特定のユーザーに属するか、任意のグループに割り当てられた接続のサブセットにメッセージを送信することができます。
Azure SignalR Service の使用方法
Azure SignalR Service を使用してプログラミングを行うには多数のさまざまな方法があります。 以下に例を示します。
- ASP.NET Core SignalR アプリをスケールする - Azure SignalR サービスを ASP.NET Core SignalR アプリケーションと統合し、数十万の接続までスケール アウトします。
- サーバーレスのリアルタイム アプリをビルドする - Azure Functions と Azure SignalR Service との統合を使用して、JavaScript、C#、Java などの言語でサーバーレスのリアルタイム アプリケーションをビルドします。
- REST API を介してサーバーからクライアントにメッセージを送信する * アプリケーションで、REST 対応の任意のプログラミング言語を使用して、SignalR Service と接続されているクライアントにメッセージを投稿できるようにする REST API が Azure SignalR Service に用意されています。