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 へのトランスパイル」を参照してください。

その他のリソース