2012-04-02 18 views
0

TimeSeriesDb databaseからデータを要求するためにサーバー+クライアントライブラリを構築する必要があります。また、.NET用にさまざまなソケットとWebSocketライブラリがあります。さらに独自の実装を行うこともできます。したがって、実際に進める方法に関するアドバイスを使用することができます。ビルドバイナリソケット.NETサーバー:カスタム対SignalR対XSockets対WebSocket4Net?

これに基づいてSuperSocketおよびWebSocket4netが見つかりました。XSocketsおよびSignalRです。また、他のものを時代遅れにするかもしれない.NET 4.5で出てくるMicrosoft's WebSocket実装があります。

しかし、クライアントがブラウザーにない.NETライブラリでもあるため、WebSocketはウェブ用に最適化されています。&リアルタイム更新が必要です。

詳細:

デシベル要求と応答の両方がバイナリである:

クライアント:所与のparamsのためのデータ(バイナリデータのブロック)を取得
サーバー:送信開始(バイナリブロックとして)データストリームを送信し、クライアントはいつでも送信を停止することができます。

私は.NET 4をターゲットにしています。そのため、TPLタスクは非同期機能に役立つかもしれません。

ニース:ストリーム多重化。複数の要求/応答が同じ接続(1つの応答ごとに1つのブロック)に渡る可能性があります。これが必要かどうか、複数の接続がうまくいくかどうかはわかりません。

答えて

2

WebSocketには公式ドキュメントRFC6455に基づいて%x2のオペコードを使用するバイナリタイプのデータがあります。

また、WebSocketsは、送信する各データメッセージに対してフレームを実装します。小さなパケットの場合、トラフィックの合理的なオーバーヘッドになります。

フロントエンドからデータベースへの接続を今後サポートする計画がない場合。それでは、なぜWebSocketを使うのかわかりません。純粋なバイナリ通信の方が複雑で、WebSocketのための準備ができたソリューションを実装または使用する必要があります。 私は、バイナリシリアル化で純粋なTCPソケットを使用するために、メモリとパケットの処理が非常に効率的であると信じています。 Google Protocol Bufferをご覧になり、.Net implementationをチェックすることをお勧めします。あなたは素敵な方法であなたのメッセージデータをパックすることができます、とだけでなく、このプロトコルを実装して、将来的に他のアプリケーションと通信する機能を追加します

。 データ・プロトコルをデータベースに組み込む場合は、データ・プロトコルを選択してハンドシェークを作成するほうがずっと良いでしょう。そして、サーバーは、クライアントが通信したいと考えている使用可能な実装の1つを使用します。

.NETで組み込みシリアライズ機能を使用することもできます。