web-dev-qa-db-ja.com

.NET 4.5 WebSocketsとSignalR

asp.net MVCチャットアプリケーションのsignalR vs html5 websockets を見ましたが、Microsoft .NET 4.5で拡張された可能性のあるHTML5 WebSocketsに基づいているため、100%私の質問に答えませんWebSocketオブジェクト。

WebSocket機能が実際にSignalRと同じように機能し、WebSocketが利用できない場合は長いポーリングにフォールバックするかどうか疑問に思っていますか?マイクロソフトは、この技術へのアプローチでSignalRと同じ技術を実装するでしょうか?

編集:

これについて疑問に思う他の人にとって、このコメントは、シナリオとSignalRを使用する理由を理解するのに最も役立ちます。

まあ、そうではありません。今までIISとASP.NETには、サポートされているWebSocketに何も組み込まれていなかったため、SignalRプロジェクトは自分でビルドする必要がありました。 SignalRは実装の詳細を抽象化したものであり、WebScocketsクラスは実装の詳細です

52
Chris Dixon
  1. WebSocket機能が実際にSignalRと同じように機能し、WebSocketが利用できない場合は長いポーリングにフォールバックするかどうか疑問に思っていますか?

    WebSocketは、他の通信技術に依存しない新しいプロトコルです。 RFCから

    このテクノロジーの目標は、複数のHTTP接続を開くことに依存しないサーバーとの双方向通信を必要とするブラウザーベースのアプリケーションにメカニズムを提供することですeg、XMLHttpRequestまたはsおよびlong pollingを使用)。

  2. マイクロソフトは、この技術へのアプローチでSignalRと同じ技術を実装するでしょうか?

    仕様に準拠したい場合はそうではありません。確かに、MicrosoftがSignalRに似た高レベルのAPIを開発することを妨げるものは何もありません。これは、通信の詳細を抽象化し、優雅なフォールバックを提供します。ただし、その仮想APIはおそらく、それを置き換えるのではなく WebSocket クラスの上に構築されます。

28
R0MANARMY

私はSignalRが進むべき道であり、とにかく.NET自体の一部になると思います(そしておそらくWebソケットのサポートを拡張/マージ/交換します)。サポートされている場合はWebソケットを使用し、サポートされていない場合は一貫したクライアントポーリングハックを使用します。

更新:

この答えはまだ支持されているので、SignalRが正式にASP.NETの一部になったことに言及する価値があります。

チェック http://asp.net/signalr

更新:.NET Core

@yazanproがコメントで指摘しているように、SignalRも.NET Coreに追加されています。

。NET Core 2.1 で利用可能で、 公式ドキュメント もあります。

38
Meligy

SignalRは、ブラウザがWebソケットをサポートしている場合はWebSocket接続を使用するOWINを使用し、ブラウザがWebSocketをサポートしていない場合はロングポーリングを使用します。

8
Avi Ben-Margi