web-dev-qa-db-ja.com

ASP.NETのComet実装?

ブラウザ内でgmailのようなメッセージングを実装する方法を検討してきましたが、 Comet の概念に到達しました。ただし、IIS(私たちのアプリケーションはASP.NET 2.0で記述されています)内でこれを行うことを可能にする優れた.NET実装を見つけることができませんでした。

私が見つけた(または、そのことについて考えることができる)ソリューションでは、ユーザーごとに実行中のスレッドを残す必要があります。そのため、ユーザーがメッセージを受け取ったときに応答を返すことができます。もちろん、これはまったくスケーリングしません。

だから私の質問は-あなたは別の方法で動作するCometのASP.NET実装を知っていますか? IISでも可能ですか?

102
Doron Yaacoby

コメットは、IISによる拡張性に挑戦していますが、コメットのシナリオを検討しているチームがいます。また、 Aaron Lerch's blog ASP.NETで初期のComet作業を完了しました。

44
Scott Hanselman

WebSync は、IIS/.NETパイプラインに直接統合される、標準に準拠したスケーラブルなCometサーバーです。また、ホストされたサービスとしてオンデマンドで利用できます。

公式には、サーバーノードあたり最大20,000の同時クライアント接続をサポートしますが、個々のテストでは50,000に達することが確認されています。メッセージスループットは1,000〜5,000の同時クライアントマーク付近で最適であり、単一ノードから1秒あたり300,000ものメッセージが配信されます。

これには、JavaScript、.NET/Mono、iOS、Mac OS X、Java、Silverlight、Windows Phone、Windows Runtime、および.NET Compactのクライアント側サポートと、.NET/MonoおよびPHPのサーバー側サポートが含まれます。

SQL ServerまたはAzure Cachingをすぐに使用してクラスタリングがサポートされますが、カスタムプロバイダーはほぼすべて(Redis、NCache)向けに作成できます。

免責事項:私はこの製品を開発する会社で働いています。

33
Anton

私は最近 Long Polling Chat Serverの簡単な例 に基づいてMVC 3非同期コントローラーを使用しました Clay Lenhartによる素晴らしい記事

AppHarborデプロイメントの例 BitBucketプロジェクトのソースに基づいてセットアップすることができます。

また、詳細については、私の プロジェクトを説明するブログ投稿 から入手できます。

15
Jacob

実際には、ASP.NETでajax対応のWebサイトを作成する多くの選択肢がありますが、正直なところ、PokeInを作成する最も簡単な方法ですcomet ajaxがサポートするWebアプリケーション。私の会社のプロジェクトの1つを保存しました。

4
BigbangO

Kaazing Enterprise Gateway もご覧ください。これは、webSocket [HTML5]ゲートウェイの製品版をリリースし、彗星の方法に完全に取って代わり、ブラウザとアプリケーションサーバー間の全二重接続を可能にします。

Light Streamer Demos もご覧ください。

3
Vikram

WS-Iグループは "Reliable Secure Profile" Glass Fishがあり、 。NET実装 明らかに inter-operate と呼ばれるものを公開しました。

運が良ければ Javascript 実装もあります。

HTTP Duplex。 を使用するSilverlight実装もあります。 JavaScriptをSilverlightに接続 オブジェクトを使用して、プッシュの発生時にコールバックを取得できます。

有料版 もあります。

1

私は昔、カスタムビルドのHTTPストリーミングサーバーを利用するチャットサイトを使用していました。私は実際にそのソフトウェアを好奇心から一度に再現しましたが、それは簡単にできると思います。 IIS、特にASP.NETで同様のタイプの「無限リクエスト」を実装しようとはしません。リクエストはスレッドプールスレッド(または非同期ハンドラーが使用されている場合はIOスレッド)を無期限に結び付けるからです。 、つまり、スレッドプール構成で許可されている範囲内でサーバーごとにしか処理できないことを意味します。

そのような機能を正当に必要としているのであれば、正直にそのためのカスタムHTTPサーバーを作成します。

それがあなたの質問に実際に答えているわけではないことは知っていますが、入力は関連があると思います。

1
Chris

Cometのアプローチは、Webファームを水平方向に拡張する準備ができていない限り、実際にスケーラブルではないと思います(Webサーバーを追加することで)。動作方法は、ユーザーセッションごとにTCP接続を開いたままにすることです。これにより、サーバーは時々その接続にデータをプッシュして、変更やアクティビティを即座にユーザーに通知できます。

0
cruizer