- PR -

ASP.NET JavaScriptでどこまで行うべきか

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-30 09:00
引用:

Accessさんの書き込み (2007-06-30 06:14) より:

サーバー側で行うのでしたら、Ajaxを実装したらどうでしょうか。Webページを部分的に更新できますので快適です。


なんとなくここは AJax を使うところではない気がする。
ハルシオン
常連さん
会議室デビュー日: 2005/03/29
投稿数: 24
投稿日時: 2007-06-30 09:18
お世話になっております。

引用:


Access さん wrote:

サーバー側で行うのでしたら、Ajaxを実装したらどうでしょうか。Webページを部分的に更新できますので快適です。




ありがとうございます。
Ajax を使用する事も一時検討されたのですが、現在のプロジェクトメンバー内に開発経験のある者がいないので
プロジェクトの納期などの都合もあり、Ajax は今回は使わない事になってしまいました。
さきほど Access さんのサイトの Ajax サンプルを拝見させていただいたところ、早速実際に使えそうなものばかりで
大変参考になりました。
(Ajax でここまで出来るのか!という新たな発見がたくさんありました^^)
次回以降、Ajax を使用することを検討させて頂くと共に、もうすこし勉強し理解を深めて実務で使えるようにしていきたいです。

ご提案ありがとうございました。
今後ともよろしくお願い致します。
ハルシオン
常連さん
会議室デビュー日: 2005/03/29
投稿数: 24
投稿日時: 2007-06-30 09:31
お世話になっております。

引用:


かるあ さん wrote:

なんとなくここは AJax を使うところではない気がする。




おそらく、なのですが Access さんは私がレスポンスと、頻繁に発生するポストバックを気にしていたので
Ajax による実装を薦めて頂けたのではないでしょうか。
しかし私は Ajax について全く無知と言っていいほどなので、どのような局面で Ajax を用いて実装すべきなのかはわかりません。
よろしければ、今回の動作が Ajax に不向きなのでは、と推察された理由があればお聞かせ願えないでしょうか。
スレッドの表題とは異なる話になってしまいますので、ここで伺うのは失礼かとは思いますが、よろしければお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-06-30 13:41
Ajax == Asynchronous JavaScript + XML です。

繰り返しになりますが、使うべき局面に大差はない (よりリッチであるという意味での差はあります) と私は考えています。このあたりは 「Ajax 仕組み」 などで検索されるとより理解できると思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-30 21:02
引用:

ハルシオンさんの書き込み (2007-06-30 09:31) より:

おそらく、なのですが Access さんは私がレスポンスと、頻繁に発生するポストバックを気にしていたので
Ajax による実装を薦めて頂けたのではないでしょうか。
しかし私は Ajax について全く無知と言っていいほどなので、どのような局面で Ajax を用いて実装すべきなのかはわかりません。
よろしければ、今回の動作が Ajax に不向きなのでは、と推察された理由があればお聞かせ願えないでしょうか。
スレッドの表題とは異なる話になってしまいますので、ここで伺うのは失礼かとは思いますが、よろしければお願い致します。


まず ASP.NET Ajax Extension を使用するなら、ポストバックの回数は増えこそすれ減ることはありません。

非同期でポストバックが行われるので気付きにくいですが、毎回すべてのフォームデータをポストするし、今回の場合計算のたびにサーバとの間に通信がかかるためユーザ数の増加によってはサーバの負荷が高くなってしまいます。

レスポンスを考えるならJavascriptで計算をおこないユーザに現在の目安を知らせます。そしてポストバックされたときに改めて計算を行い、こちらの結果を採用します。

#追記
ASP.NET Control Toolkit の Extender を自分で実装して、計算をおこなう物を作ればできるけれど今回の場合そこまでする必要はないと思う。
_________________
かるあ のメモ
http://karua.at.webry.info/

[ メッセージ編集済み 編集者: かるあ 編集日時 2007-06-30 21:06 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-30 22:35
連投になってすいません

Ajax Extension 自体公開されてからそう時間がたっていないので、非同期ポストバックをどの時に使えばいいといったガイドラインはまだ出ていないのですが、サーバと通信を行うポイントはできるだけ少なくするというのは今までの ASP.NET の開発とそう変わらないと思います。

リッチなユーザインターフェイスを作るために、Ajaxを使うとしても、
ユーザの入力によって動的にデータベースなどからデータを取得する必要がある場合や、(いまいち考えつきませんが).Net だと簡単だけれど Javascript だとえらい大変な処理をする場合など以外は基本的にクライアントサイドのスクリプトに処理をさせたほうがいいと思います。

Javascript の開発があまり得意でなく、.Net のコードでできるだけ済ませたいということもあるのでその場合には 非同期ポストバックによるネットワークおよびWebサーバの負荷 などを考えた上で Ajax を検討するべきだと思います。
_________________
かるあ のメモスニペット
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-07-02 06:39
引用:

おそらく、なのですが Access さんは私がレスポンスと、頻繁に発生するポストバックを気にしていたのでAjax による実装を薦めて頂けたのではないでしょうか。


ポストバック回数を減らすとかではなく、テキストボックス/ラベルの値を更新するのにフルポストバックでWebページ全体を再ロードするのか、それともAjaxを実装してパーシャルポストバックでWebページを部分的に更新するのかということで提案させたいただきました。

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集

[ メッセージ編集済み 編集者: Access 編集日時 2007-07-02 07:50 ]
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-07-02 07:48
>たしかにJavaScriptだけで実装するとご指摘のようなことが可能になってしまいますね。
>JavaScriptにこだわっていた訳ではないのでここまで伺えればもちろんサーバで計算を行います。

どこまでJavaScriptを使うかではなく。

クライアント側のデータをどこまで信用するかということではないでしょうか。

たとえば、ECサイトでショッピングカートを用意して商品コードと数量を入力すると
「金額」、「消費税」、「合計額」をクライアント側(JavaScript)で計算して表示するとします。

ユーザーが注文ボタンをクリックして注文したときは、クライアント側から「商品コード」と「数量」だけ取得して、サーバー側で「金額」、「消費税」を計算しますよね。

つまり、クライアント側で計算した「金額」、「消費税」を信用しなければ問題ないのではないでしょうか。

ただし、クライアント側にJavaScriptを組み込むときは、JavaScriptが無効にされている場合も正常に動作するように配慮する必要があります。

JavaScriptが無効なときも動作するように設計する
http://jsajax.com/SamplesByID.aspx?id=297

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集

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