ASP.NETのComet実装?[閉まっている]


103

私はブラウザの中にGmailのようなメッセージングを実装する方法を探していて、Cometのコンセプトにたどり着きました。ただし、IIS内でこれを実行できる適切な.NET実装を見つけることができませんでした(アプリケーションはASP.NET 2.0で作成されています)。

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

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


12
:私は、最初のMS-恵まれ実装はSignalRだと思いhanselman.com/blog/...
user423430

Node.JSがAzureでサポートされるようになりましたが、2003年のIISも間もなくサポートされる予定です。我々は(IIS内の彗星サーバーを実行できるようになることを意味しwindowsazure.com/en-us/develop/nodejs
goodguys_activate

回答:


44

コメットの永続的な接続のため、コメットはIISでのスケーリングが困難ですが、現在、コメットのシナリオを検討しているチームがいます。また見アーロン・レルヒさんのブログ私は彼がASP.NETでのいくつかの初期のコメット仕事をしています信じていて。


9
これは実際に実装されています。以下のアントンの応答に従って、WebSyncをチェックしてください。(frozenmountain.com/websync
jvenema

3
逆アヤックスと呼ばれる人はいますか?これを確認してください:pokein.codeplex.com
Zuuum

4
MVC非同期コントローラーは、待機中のIISワーカースレッドをオフロードすることにより、IISの問題に対処するのに役立ちます。ClayLenhartによるこの素晴らしい投稿を参照してください。BitBucketのChat Serverサンプルプロジェクトも参照してください。
Jacob

33

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

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

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

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

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


17
あなたの製品としてここに免責事項があるはずです...
Sam Saffron

9
確かに、私が働いている会社が作成したものです。
アントン

1
@Anton-何かを隠さないことは、それを開示することと同じではありません。
RedFilter

1
@Antonサーバーノードごとに最大2万の同時クライアント接続をどのようにサポートするかについて詳しく説明できますか?これらの数値はよく見えます。「大きすぎる」
Pacerier、

1
もちろん、25,000フィートのビューから、Websyncが内部でどのように機能するかを概念的に尋ねるのは賢明ではないと思います。
nocarrier

15

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

BitBucketプロジェクトのソースに基づいてセットアップしたAppHarborデプロイメントの例を使用できます。

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


AppHarborデプロイメントの例が好き
guaike

> - 「プロジェクト説明するブログ記事」web.archive.org/web/20130328042214/http://...
jaybro

ありがとう!記事が気に入ってよかったです。
クレイ

4

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



1

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

そのような機能に対する正当な強いニーズがあった場合は、そのためのカスタムhttpサーバーを正直に記述します。

それはあなたの質問に実際には答えないことはわかっていますが、入力が関連している可能性があると思いました。


1

WS-Iグループは、Glass Fishと.NETを実装した「Reliable Secure Profile」と呼ばれるものを公開しました。

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

HTTPデュプレックスを使用するSilverlight実装もあります。 あなたはできるのSilverlightにjavascriptの接続のプッシュが発生したときにコールバックを取得するオブジェクト。

有料の有料版もあります。


4
多数の質問に対してまったく同じ答えを連続して一括投稿すると、いくつかのフラグが
つまずく

2
psst

0

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


6
すべては、ポイントまで垂直方向にのみスケーラブルです。その後、水平方向のスケーリングを行う必要があります。
アントン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.