- - PR -
.netFramework2.0(C#)でComet方式は実装できるのでしょうか?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-09-25 19:43
いつもお世話になっております。
ご存知の方、試みた方などいらっしゃいましたら、ご意見をお願いします。 WebでサーバプッシュするCometという方式が 下記サイトで紹介されていますが、 .netFramework2.0のクラス(WebhttpRequestクラスなど)を使用して この方法を利用したクライアント(Windowsアプリ)を 実装することは可能なのでしょうか? http://www.atmarkit.co.jp/fjava/rensai4/safetomcat_03/safetomcat_03_1.html 今回ある案件で検討したのですが、 期間の都合で動作試験、方式採用などは行えませんでした。 クラス説明などをMSDNで読み無理かなといった印象を受けています。 ご存知の方、もしくは私はこう予想するなどでも良いのですが、 意見などありましたらお願いします。 | ||||
|
投稿日時: 2008-09-25 21:56
できないことはないですよ。
「サーバ側からの非同期処理も実現できる」といえばすごいようですが、実体は クライアントからのリクエストを、タイム アウト ギリギリまで待たせる、 ということです。なので、タイム アウトの時間ギリギリまでウェイトをかけて、その間にイベントが発生すればイベントでレスポンスを返す。発生しなければ、リフレッシュするレスポンスを返す。 サーバに負荷をかける、という点では、同じだと思います。 | ||||
|
投稿日時: 2008-09-26 08:38
WCFの検討はどうでしょうか?(あまり詳しくはないですが)
WSDualHttpBindingなどで双方向可能ですが、Ajaxライブラリの方が対応していないかも? 私的にはリアルタイム性をどこまで求めているのかわからないですが、 Timerポーリング+Ajaxでいいんじゃなでしょうか? | ||||
|
投稿日時: 2008-09-26 09:07
回答ありがとうございます。
ちょっと言葉足らずだったようですので補足させて下さい。 提示いただいた内容は、下記サイトで言うところの 『ロングポーリング』だと思います。 今回は、『ロングポーリング』ではなく『ストリーミング 』にしたいのです。 http://www.infoq.com/jp/articles/javaone2008_comet またサーバは、Linux+Apatch/tomcatですので、 WCFなどの.netに特化した技術は採用できない現状があります。 単純には、下記のような動作にしたいのです。 @自作アプリからhttpリクエストをしてWebサーバへ接続をはる (以降、張りっぱなし) Aサーバでイベント発生時に、リアルタイムに通知イベントを発生させる。 ※何らかのエラーが出て切れる場合は再接続でOKですが、 仕組み上必ず切れるのはNGなのです。 『ロングポーリング』では、接続が切れるタイミングが必ず一回の要求づつに 一瞬発生することになると思いますが、それでは要件的に採用メリットが得られそうにないのです。 | ||||
|
投稿日時: 2008-09-26 10:07
すいませんてっきりASP.NETと間違えてました。
クライアント数(同時)Xリアルタイム性Xデータ量で サーバーの負荷が耐えれるならやっぱりポーリングで良いのでは? (自力でcommetぽいのは大変かも) +HTTP(+Port80)でないとだめなの?(インターネット?) | ||||
|
投稿日時: 2008-09-26 10:23
回答ありがとうございます。
>クライアント数(同時)Xリアルタイム性Xデータ量で >サーバーの負荷が耐えれるならやっぱりポーリングで良いのでは? >(自力でcommetぽいのは大変かも) 今回は、ご指摘の『(自力でcommetぽいのは大変かも) 』 の理由で不採用にしたのです。 わからないことだらけなので、仕組み的にも品質保証できる自信がなかったので... >+HTTP(+Port80)でないとだめなの?(インターネット?) HTTP(+Port80)は要件になっています。 そこから、インターネット、イントラネット問わずにという要件です。 まぁ不採用にしたのですが、実際、自作せずに.netクラスにあるのかないのか? 判断は合っていたのかどうかというのを念のため確認したくての投稿だったのです。 やはり無さそうという感じなのですね。 ご意見ありがとうございました。 | ||||
|
投稿日時: 2008-09-26 10:42
例えば、TcpClient を使ってコツコツと組み立てることは可能でしょう。 けど、HttpWebRequest だとどうかなぁ? 接続しっぱなしにきちんと対応しているかどうかは微妙な気がします。 あと、検索エンジンとかで探せば、誰かが作った Commet クライアントのソースとかがみつかったりする可能性もあるんじゃないでしょーか。 | ||||
|
投稿日時: 2008-09-26 11:09
アドバイスありがとうございます。
>例えば、TcpClient を使ってコツコツと組み立てることは可能でしょう。 これって、SSL対応は簡単に実装できるんでしょうか? >けど、HttpWebRequest だとどうかなぁ? >接続しっぱなしにきちんと対応しているかどうかは微妙な気がします。 やはりこの変が微妙なセンなんですよね。 >あと、検索エンジンとかで探せば、誰かが作った >Commet クライアントのソースとかがみつかったりする可能性もあるんじゃないでしょーか。 なるほど、あたってみます。 アドバイスありがとうございました。 |