ASP.NET Core SignalR の概要
SignalR の概要
ASP.NET Core SignalR は、リアルタイム Web 機能をアプリに簡単に追加できるオープンソース ライブラリです。 リアルタイム Web 機能を使用すると、サーバー側のコードでコンテンツをクライアントに即座にプッシュできます。
SignalR に適した候補は、次のとおりです。
- サーバーからの頻繁な更新が必要なアプリ。 たとえば、ゲーム、ソーシャル ネットワーク、投票、オークション、マップ、GPS などのアプリです。
- ダッシュボードと監視アプリ。 たとえば、会社のダッシュボード、売上の即時更新、トラベル アラートなどです。
- コラボレーション アプリ。 ホワイトボード アプリとチーム会議ソフトウェアは、コラボレーション アプリの例です。
- 通知を必要とするアプリ。 ソーシャル ネットワーク、電子メール、チャット、ゲーム、トラベル アラート、その他の多くのアプリは通知を使用します。
SignalR は、サーバーからクライアントへのリモート プロシージャ コール (RPC) を作成するための API を提供します。 RPC は、サーバー側の .NET Core コードからクライアント上の関数を呼び出します。 サポートされているプラットフォームは複数あります。各プラットフォームには、それぞれのクライアント SDK が含まれています。 このため、RPC 呼び出しによって呼び出されるプログラミング言語は異なります。
ASP.NET Core の SignalR の機能をいくつか示します。
- 接続管理を自動的に処理します。
- 接続されているすべてのクライアントに同時にメッセージを送信します。 たとえば、チャット ルームなどです。
- 特定のクライアントまたはクライアントのグループにメッセージを送信します。
- 増加するトラフィックを処理するためにスケーリングします。
- SignalR ハブ プロトコル
ソースは、GitHub の SignalR リポジトリでホストされます。
トランスポート
SignalR では、(グレースフル フォールバックの順に) リアルタイム通信を処理するために、次の手法がサポートされています。
- WebSocket
- サーバー送信イベント
- Long Polling
SignalR は、サーバーとクライアントの機能内にある最適なトランスポート方法を自動的に選択します。
ハブ
SignalR では、"ハブ" を使用してクライアントとサーバー間で通信を行います。
ハブは、クライアントとサーバーが相互にメソッドを呼び出すことを可能にするハイレベル パイプラインです。 SignalR は、マシンの境界を越えたディスパッチを自動的に処理し、クライアントがサーバー上でメソッドを呼び出すこと、またその逆も可能にします。 厳密に型指定されたパラメーターをメソッドに渡して、モデル バインドを有効にできます。 SignalR には、JSON に基づくテキスト プロトコルと MessagePack に基づくバイナリ プロトコルの 2 つの組み込みハブ プロトコルがあります。 通常、MessagePack では JSON と比較して小さいメッセージが作成されます。 MessagePack プロトコルのサポートを提供するには、古いブラウザーで XHR レベル 2 をサポートする必要があります。
ハブは、クライアント側メソッドの名前とパラメーターを含むメッセージを送信することで、クライアント側コードを呼び出します。 メソッド パラメーターとして送信されるオブジェクトは、構成済みのプロトコルを使用して逆シリアル化されます。 クライアントでは、名前とクライアント側コードのメソッドのマッチングが試行されます。 一致が見つかると、クライアントはメソッドを呼び出し、それに逆シリアル化されたパラメーター データを渡します。
ECMAScript 6 (ES6) をサポートしていないブラウザー
SignalR は ES6 を対象としています。 ES6 をサポートしていないブラウザーの場合は、ライブラリを ES5 にトランスパイルします。 詳細については、「ES6 の概要 – Traceur と Babel を使用した ES6 から ES5 へのトランスパイル」を参照してください。
その他のリソース
ASP.NET Core