- PR -

サーバーからリアルタイムにページの表示を更新する

1
投稿者投稿内容
taka
会議室デビュー日: 2005/01/26
投稿数: 2
投稿日時: 2005-01-26 19:47
初めまして。書き込むのは初めてなので,よろしくお願いします。

現在C#でWindowsアプリの開発を行っているのですが,
今回ASP.NETによるWeb開発を行う羽目になってしまいました。
ASPはさっぱりなので聞きしたいのですが,

クライアント側のブラウザ上の表示を,サーバーからリアルタイムに
制御するにはどのようにしたらよろしいのでしょうか?

例えば,あるユーザがWebページを見ています。
そのページ上では,サーバー上の時間がリアルタイムに表示されている,
といった感じの制御を行いたいのです。

ひょっとしたらものすごく初歩的な質問をしているのかもしれませんが,
何とぞよろしくお願いいたします。
おふぃすこま
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 2005-01-26 20:34
こんにちは。

Windowsアプリで言うところの Timer処理を実現させようとしているのですよね?
でしたら、まずはこの会議室の『検索』で「ASP.NET Timer」などで検索してみて下さい。

私が検索したところ何件かヒットしました。
ただ、問題解決してるかまでは見ていません。

でも、普通に考えたらJavaScriptを使うしかないのでは?
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-01-26 21:18
ぼのぼのです。takaさんこんにちわ。

 論点がちょっとずれるかもしれませんが…「そんなこと知ってるわ!」ってことなら、スルーしてください。
 .NET使ってるとaspxと処理(vbとかcsとか)がペアになってるので忘れがちですが、WebアプリはHTTPプロトコルを使ってWebサーバとクライアント間の通信を行っていて、なにげなく組んだプログラムも内部ではrequestとresponseを繰り返しています。(Visual Studio .NETは簡単なものならそこらへん意識せずに作れちゃうようになってるわけですが)
 だからWebにおける真の意味でのリアルタイム処理ってのは、例えば一般の掲示板サイトとかで「F5を連打しつづけてる」ようなもんで、そんなWebアプリが仮に作れたとして(多分不可能ではないです)使い物にならないことは容易に想像できると思います。
 だからWebアプリ開発においてはjavascriptとか色々駆使して、いかにあたかもリアルタイム(に近い状態)で動いているように見えるものを作るか、というところが醍醐味でもあり、Windowsアプリからの移行で最も苦労する点でもあります。
 ここでいうリアルタイムとは、クライアント(ブラウザ)とサーバーの同期をどれだけ頻繁にとるか、ということに言い換えられるかと思いますが、頻度を上げれば上げるほどHTTP通信がいっぱい発生してネットワークの負荷も増えるし利用者のストレスも増えます(LANとかならまだしも64Kとかだと悲惨なことに…)Web開発者が抱えるひとつのジレンマです。

 ということで、質問に対する答えにはなってないかもしれませんが、Webでリアルタイム処理をやりたい場合はそこらへんをしっかり念頭に置いて設計しないと非常に使い勝手の悪いものができあがったりするので注意が必要です。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-01-26 21:37
引用:

ぼのぼのさんの書き込み (2005-01-26 21:18) より:
ことで、質問に対する答えにはなってないかもしれませんが、Webでリアルタイム処理をやりたい場合はそこらへんをしっかり念頭に置いて設計しないと非常に使い勝手の悪いものができあがったりするので注意が必要です。


同意。

更新頻度や、更新するデータの種類、ターゲットとするOSやブラウザ、ネットワーク環境、そしてDevelopperのスキルを踏まえて最適な方法を考えなくてはなりません。

また動的な画面更新を得意とする他の方法(JavaApplet or MacromediaFlash or ActiveX)を併用する道だってあります。

ASP.NETのWebアプリケーションである以上、Serverから動的にクライアントに対して画面の更新を要求する方法なんてありません。画面の自動更新を実現しようとするなら、JavaScriptで定周期にページのリロードする方法以外には無いでしょう。もちろん更新間隔が短く、同時接続数が多いなら、Serverへの負荷はそれなりに大きいものになります。


[ メッセージ編集済み 編集者: 甕星 編集日時 2005-01-26 21:37 ]
taka
会議室デビュー日: 2005/01/26
投稿数: 2
投稿日時: 2005-01-26 23:08
みなさん素早いお返事をありがとうございます。

やはり単純にはクライアント側から定期的に更新をかけるという方法なんですね。
ご指摘の通りこれではトラフィックの増大にもなり,サーバーの負荷も高そうです。

補足なんですが,MsnMessengerサービスの中でもWebMessengerをご利用になられた
ことがありますでしょうか?あれは,ブラウザ上で動いていながら,
相手からメッセージが来ると自動的に画面のリロードすらなく更新されます。
これをみて,ASP.NETならサーバ側から制御できるのか!?と思ってしまったのですが,
今思えば,数秒おきにブラウザ側からサーバにメッセージが無いか問い合わせてるのでしょうね。私はこのWebMessengerぐらいスムーズに情報の更新をしてみたいと思ったのですが…。

いろいろなご意見ありがとうございます。さっそくご指摘のあったことに気をつけて,
作業を始めてみたいと思います。


1

スキルアップ/キャリアアップ(JOB@IT)