ASP.NET Core SignalR の概要Introduction to ASP.NET Core SignalR

SignalR とは何かWhat is SignalR?

ASP.NET Core SignalR は、アプリへのリアルタイム Web 機能の追加を簡素化するオープン ソース ライブラリです。ASP.NET Core SignalR is an open-source library that simplifies adding real-time web functionality to apps. リアルタイム Web 機能は、サーバー側コードからクライアントにコンテンツを即座にプッシュすることを可能にします。Real-time web functionality enables server-side code to push content to clients instantly.

SignalR に適した候補:Good candidates for SignalR:

  • サーバーから頻度の高い更新を必要とするアプリ。Apps that require high frequency updates from the server. 例えば、ゲーム、ソーシャル ネットワーク、投票、オークション、マップ、および GPS アプリです。 Examples are gaming, social networks, voting, auction, maps, and GPS apps.
  • ダッシュ ボードや監視アプリ。Dashboards and monitoring apps. 会社のダッシュ ボード、即座に更新される販売情報、渡航に関する危険情報、が例に含まれます。Examples include company dashboards, instant sales updates, or travel alerts.
  • コラボレーション アプリ。Collaborative apps. ホワイト ボード アプリやチーム会議ソフトウェアがコラボレーション アプリの例です。Whiteboard apps and team meeting software are examples of collaborative apps.
  • 通知を必要とするアプリ。Apps that require notifications. ソーシャル ネットワーク、電子メール、チャット、ゲーム、渡航に関する危険情報、およびその他の多くのアプリが通知を使用します。Social networks, email, chat, games, travel alerts, and many other apps use notifications.

SignalR は、サーバー・クライアント間のリモート プロシージャ コール (RPC)を作成するための API を提供します。SignalR provides an API for creating server-to-client remote procedure calls (RPC). Rpc では、サーバー側の .NET Core コードからのクライアントで JavaScript 関数を呼び出します。The RPCs call JavaScript functions on clients from server-side .NET Core code.

ASP.NET core SignalR の機能の一部を次に示します。Here are some features of SignalR for ASP.NET Core:

  • 接続の管理を自動的に処理します。Handles connection management automatically.
  • 同時に接続されているすべてのクライアントにメッセージを送信します。Sends messages to all connected clients simultaneously. 例えば、チャット ルーム。For example, a chat room.
  • 特定のクライアントまたはクライアントのグループにメッセージを送信します。Sends messages to specific clients or groups of clients.
  • トラフィックの増加の対応にスケールします。Scales to handle increasing traffic.

GitHub の SignalR リポジトリにソースがホストされています。The source is hosted in a SignalR repository on GitHub.

トランスポートTransports

SignalR には、リアルタイム通信を処理するためのいくつかの手法がサポートされています。SignalR supports several techniques for handling real-time communications:

  • WebSocketWebSockets
  • Server-Sent EventsServer-Sent Events
  • ロング ポーリングLong Polling

SignalR は、サーバーおよびクライアントの機能に応じて最適なトランスポート メソッドを自動的に選択します。SignalR automatically chooses the best transport method that is within the capabilities of the server and client.

ハブHubs

SignalR は、クライアントとサーバー間の通信にハブを使用します。SignalR uses hubs to communicate between clients and servers.

ハブは、相互にメソッドを呼び出すことをクライアントとサーバーに許可する、高度なパイプラインです。A hub is a high-level pipeline that allows a client and server to call methods on each other. SignalR は、コンピューターの境界を越えてディスパッチを自動的に処理します。これにより、クライアントはサーバーのメソッドを呼び出すことが許可され、その逆も許可されます。SignalR handles the dispatching across machine boundaries automatically, allowing clients to call methods on the server and vice versa. モデル バインディングを有効にする厳密に型指定されたパラメーターを、メソッドに渡すことができます。You can pass strongly-typed parameters to methods, which enables model binding. SignalR は、2 つの組み込みハブプロトコルを提供します。JSONに基づくテキスト プロトコルと、MessagePackに基づくバイナリ プロトコルです。SignalR provides two built-in hub protocols: a text protocol based on JSON and a binary protocol based on MessagePack. MessagePack は一般に、JSON と比較して小さいメッセージを作成します。MessagePack generally creates smaller messages compared to JSON. MessagePack プロトコル サポートを提供するため、古いブラウザーはXHR レベル 2をサポートする必要があります。Older browsers must support XHR level 2 to provide MessagePack protocol support.

ハブは、クライアント側メソッドのパラメーターと名前を含むメッセージを送信することによって、クライアント側のコードを呼び出します。Hubs call client-side code by sending messages that contain the name and parameters of the client-side method. メソッドのパラメーターとして送信されたオブジェクトは、設定されたプロトコルを使用して逆シリアル化されます。Objects sent as method parameters are deserialized using the configured protocol. クライアントは、クライアント側コードのメソッド名との一致を試みます。The client tries to match the name to a method in the client-side code. クライアントが一致を検出すると、逆シリアル化されたパラメーター データを渡してメソッドを呼び出します。When the client finds a match, it calls the method and passes to it the deserialized parameter data.

その他の技術情報Additional resources