1

そこで私は、 ASP.NETファミリの一部となった非常に優れたテクノロジであるSignalRについて掘り下げてきました。いくつかのチュートリアルに従って、株式ティッカー、チャット、ダッシュボード、移動オブジェクトなどのきちんとしたリアルタイム アプリケーションを構築する方法を説明しました。

これらの基本的なチュートリアルは、フレームワークの背後にある力の一部を実際に示しています。私は次のことを示すいくつかのドキュメントを読んでいました:

  • 繋がり
  • ハブ

したがって、基本的に、ClientServerを接続するには 2 つの選択肢があります。しかし、このすべてのドキュメントに出くわしたとき、次のように述べられています。

SignalR は接続またはハブを利用できます。Connection を作成することで、Web ソケットを利用します。生のソケットへのコーディングにはどれが付属していますが、それは忠実度が高く、待ち時間が短い. しかし、私が述べたように、これは Web Socket のサポート、ソケットへの直接コーディングのどちらにも欠点がある可能性があります。

これは理にかなっていますが、それから彼はどのように機能するかを説明しますHub. raw ソケット上で直接コード化されます。ここが興味深い部分です。Hubは次の転送方法を適用します。

  • ウェブソケット
  • ロングプーリング
  • サーバー送信イベント
  • 永遠のフレーム

明らかにHubかなりきれいです。最適な転送方法を特定すると、その方法を実装して目標を達成します。

私の質問とにかく自動的に最適な転送方法を選択するときに、ソケットに直接コーディングしたいのはなぜですか。HubWeb ソケットを含めますか?

明確化はいいでしょう。Hub?を使用しない理由がよくわかりません。なぜわざわざ使用するのConnectionですか?

4

1 に答える 1

3

Patrick Fletcher は、「SignalR の紹介: 接続とハブ」で、ハブを介して接続を使用する理由について説明しています。それ以外の場合はすべて、ハブを使用すると多くの追加機能が提供されるため、ハブを使用する必要があります。彼が書いたものは次のとおりです。

接続とハブ

SignalR API には、クライアントとサーバーの間で通信するための 2 つのモデル (接続とハブ) が含まれています。

Connection は、単一受信者、グループ化、またはブロードキャスト メッセージを送信するための単純なエンドポイントを表します。接続 API (PersistentConnection クラスによって .NET コードで表される) により、開発者は、SignalR が公開する低レベルの通信ネットワークに直接アクセスできます。Connections 通信モデルを使用することは、Windows Communication Foundation などの接続ベースの API を使用したことがある開発者にとって馴染みのあるものです。

ハブは、クライアントとサーバーが相互にメソッドを直接呼び出すことを可能にする接続 API に基づいて構築された、より高レベルのパイプラインです。SignalR は、魔法のようにマシンの境界を越えたディスパッチを処理し、クライアントがサーバー上のメソッドをローカル メソッドと同じくらい簡単に呼び出すことができるようにします。アプリケーションでさまざまな種類のメッセージを使用する場合は、Hub クラスを使用することをお勧めします。これにより、独自のディスパッチを作成する必要がなくなります。ハブを使用すると、受信、解釈、および対応が必要な明示的なメッセージを送信するのではなく、クライアントでメソッドを呼び出すことができます。Hubs 通信モデルの使用は、.NET Remoting などのリモート呼び出し API を使用したことがある開発者にとって馴染みのあるものです。

通信モデルの選択

ほとんどのアプリケーションは Hubs API を使用する必要があります。Connections API は、次の状況で使用できます。

  • 送信されるメッセージの形式を制御する必要があります。
  • 開発者は、リモート呼び出しモデルよりも、メッセージングおよびディスパッチ モデルを使用することを好みます。
  • メッセージング モデルを使用する既存のアプリケーションは、SignalR を使用するように移植されています。
于 2013-04-22T23:35:13.000 に答える