2012-02-13 16 views
2

私は長いポーリングや彗星などについて読んでいて、.Netについては、私はSignalRとAspCometについて知りました。私は似た彗星&について初心者だが、利点が、私は単純に完全jquery.ajax /を使用することができる場所SignalRまたはAspCometを使用しているものを私に明らかではない。シンプルなjquery ajaxとSignalRとAspCometとの比較

(function poll(){ 
    $.ajax({ url: "server", success: function(data){ 
     doSomething();  
    }, dataType: "json", complete: poll, timeout: 30000 }); 
})(); 

が、私は明らかにここで何かが欠けています、 手伝ってくれますか?

また、システム/サーバーの観点からは、主な違いは何ですか?私は$ .ajaxを使ってサーバーとの接続を開き、それを長く開いておくことを理解していますが、私はSignalRも同じことをすると思います。か否か? これに対して、AspCometはスレッドをリクエストプールに戻すと言います。私が知っている

は、私は少し困惑していると$アヤックスもの対SignalRおよび/またはAspCometを使用する利点についてのイントロをいただければ幸いです:)

感謝を!

答えて

2

$.ajaxの例では、複数のリクエストをサーバーに送信しており、クライアントごとにこれを実行しています。そのため、WebサーバーはHTTP要求に常に悩まされており、クライアントが通知に登録しているデータは頻繁に変更されない可能性があるため、実際に目的を果たしているサーバーはほとんどありません。 1つのAJAXリクエストが完了すると、すぐに別のリクエストが送信されます。

長いポーリングでは、サーバーによってブロックされた単一の要求が送信され、応答に書き込んでクライアントに通知することができます。

長いポーリングの利点は、サーバーに送信されるHTTP要求の数を制限していることです。

+0

私は[ブログ](http://techoctave.com/c7/posts/60-simple-long-polling-example- with-javascript-and-jquery)、リクエストが完了するまでサーバーに1つのリクエストが送信されたとします(再帰的なコールポーリング)。この例は長いポーリングでなければなりません。私は何かを間違って引用した? – Pietro

2

COMETアプリケーションでは、しばしばカスタムサーバーが必要です。 IISは明らかに拡大縮小しない各要求を処理する専用のスレッドを保持しています。 IISにはCPUあたり数千スレッドの制限があります。

AspCometは、スレッドのライフタイムを処理するサーバー側のソリューションを提供することでこの問題を解決します(書いたように、プールに戻すスレッド)。 AspCometはBayeux Protocolと互換性があり、Bayeux JSクライアントを使用できます。

SignalRは、非同期呼び出しで基本通信プロトコルをカプセル化するクライアント/サーバーソリューションです。 SignalRは、利用可能な最善のプロトコル(長いポーリング、Webソケット、その他)を選択しますので、心配する必要はありません。彼らは、.NET、Silverlight、WP7、JSなどのクライアントを持っています

+0

ありがとう!物事がはっきりし始める。マルチインスタンス環境で私たちのアプリケーションをホストするので、アプリケーションのインスタンスが複数ある場合、正しく動作しないため、SignalRはまだ使用できません。 AspCometがマルチインスタンスフレンドリーかどうかは不思議です。何か案は? – Pietro

+0

@Pietro申し訳ありませんが、私はAspCometを使ったことはありません。私は、SignalRチームがそれに取り組んでいることを知っています。 – nmat

+0

私はパーティーに遅刻していることは知っていますが、私は2セントをマルチインスタンスに追加したいと思います。 AspCometは、少なくともサンプル構成を使用している場合は、クライアントリポジトリをメモリに格納しているので、複数のインスタンスをそのまま使用することはできません。クライアント・リポジトリーをいくつかの方法で永続化することができますが、これはインスタンス間で共有することができますが、待ち時間やロック競合によってパフォーマンスが低下する可能性があります。私たちがやったことは、ロードバランサを使用して特定のインスタンスに彗星の要求を誘導することでした。彼らはsignalrのredisストアで作業していたようですが、放棄されている可能性がありますか? –

関連する問題