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 を提供します。 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.

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

トランスポートTransports

SignalRは、リアルタイム通信を処理するための次の手法をサポートしています (正常なフォールバックの順序)。 supports the following techniques for handling real-time communication (in order of graceful fallback):

  • WebSocketWebSockets
  • サーバーから送信されたイベントServer-Sent Events
  • 長いポーリングLong Polling

SignalRでは、サーバーとクライアントの機能内にある最適なトランスポート方法が自動的に選択されます。 automatically chooses the best transport method that is within the capabilities of the server and client.

ハブHubs

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コンピューターの境界を越えたディスパッチを自動的に処理します。これにより、クライアントはサーバーでメソッドを呼び出すことができ、その逆も可能になります。 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には、JSON に基づくテキストプロトコルとMessagepackに基づくバイナリプロトコルという2つの組み込みのハブプロトコルが用意されています。 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