web-dev-qa-db-ja.com

Node.Js + Socket.IO vs SignalR vs C#WebSocketサーバー

現在、クライアントにメッセージを送受信する.Netで記述されたTCPサーバーアプリケーションがあります。Webアプリケーションの構築を検討しているため、通信レイヤーが必要です。

TCPサーバーに接続し、Webアプリケーションに通信をプッシュするNode.JS + Socket.IOアプリを作成しました。すべて正常に動作します。

.Netスタックに保持するための代替手段としてSignalRについて読んだところです。

しかし、C#Websocket Server、基本的なデモ here を作成できることもわかっています。

この基本的なサーバーはSignalRと同じですが、明らかに多くの機能を備えていると思いますか?

私が決めようとしているのは、現在のTCPアプリケーションをWebsocketサーバーに追加するだけですか、それとも別のSignalRまたはNode.jsルートに行きますか?アプリケーションの実行、Windowsサービス、コンソールアプリ、またはIISサービス?

70
Jon

SignalRは、トランスポートネゴシエーション/フォールバックをサポートするという点でSocket.IOに似ています。これはフレームワークであり、サーバーではないため、何らかのサーバーでホストする必要があります。 ASP.NET、OWIN(例:Kayak)およびセルフホスト用のホストがあるため、独自のプロセスで簡単に実行できます。 Windowsサービス。

SignalRは、ブラウザー(JS)、. NET、Windows Phone 7、およびSilverlightのクライアントをサポートしています。また、iOS、Mono Touchなどに貢献しているクライアントもいます。

SignalRは、生のソケットよりもはるかに高いレベルのAPIを提供します。これは大きな利点であり、サーバーからクライアントへの「RPC」などをブロードキャスト(またはターゲット)方式で実行できます。

73
Damian Edwards

その他の影響

両方のテクノロジーを使用し、.NET /ノードスタックの両側で作業しました。

  1. 最近はノード側を好んでいますが、.NETでのみ作業している場合は、SignalRが当然の選択です。逆に、ノードですべてのプロジェクトをビルドする場合、socket.ioまたは sockjs を使用します。フォールバックやそのようなことを心配する必要がないほどスコープが狭い場合は、 ws モジュールをチェックアウトすることをお勧めします。以前は、node-gypがネイティブの依存関係をインストールできないというインストールの問題により、socket.ioがWindowsで苦痛を感じていました( node-gyp には大きく異なる多くの設定手順が必要です使用しているWindowsのバージョンがC++のネイティブビルドモジュールに必要です)。 [〜#〜] update [〜#〜]このWindowsビットは、 windows-buildのおかげで、あまり意味がありません。 -ツール
  2. ロードバランサーがあり、SignalRの実行を計画している場合は、ロードバランサーをバイパスするバックプレーンとしてSQLまたはRedisを設定する必要があります。 socket.io側で対処する同様の問題があり、[複数のサポートされているメソッド] [1]があります(そのうちの1つもredisです)。

更新-jquery情報は適用されなくなったため削除

19
cchamberlain

スケーラブル/スレッドセーフの開発TCPサーバーは簡単なタスクではないかもしれません。一方、自分で始めるためにインターネット上に非常に素晴らしいリソースがあります。例えば、素敵なオープンソースのWebSocketプロジェクトを探しているだけで、私のアドバイスは次のとおりです。

Alchemy Project :オープンソースC#WebSocketライブラリ

Fleck Project :オープンソースのC#WebSocketライブラリ

SignalRは素晴らしいかもしれませんが、WebSocket機能を提供するにはWindows Server 8/IIS 8が必要です。

商用製品側では、特にwebsocket機能がすべてのブラウザーで利用できるわけではないことを考慮して、PokeIn WebSocketとリバースAjaxライブラリをお勧めします。バージョン2.0以降では、WebSocketサーバーが組み込まれています。詳細は here から入手できます

15
Zuuum