xrea-banner xreaad

閑話休題

namespace kilrey; / JavaScript / AJAX / 閑話休題

前のページ(サンプル BBS)へ / 次のページ(COMET)へ

ここまで単機能から統合されたサービスまでの サンプルを幾つか見てきました。 単機能のサンプルはただ通信をするだけで あまり意味がないものでした。 それでも DB と組み合わせることで 簡単な掲示板を作ることが出来ました。 例えば、掲示板の html を改造して一秒ごとに更新すれば 簡単なチャットの出来上がりです。 (そのままだと負荷が高すぎて実用的ではないです。 そのような状況で役に立つ COMET という技術を後ほど紹介します) 他にも JavaScript でレンダリングする Wiki というのも かなり有望なのではないでしょうか。

AJAX を使った Web サービスでは サーバとクライアントが協調して仕事をします。 この協調の仕方は必ずしも サーバがデータ、クライアントが UI という 分割でなくても良いのです。 例えば、処理の大半がサーバに集中していて そこがボトル・ネックになっていたのなら、 処理の一部をクライアントに負わせれば ボトル・ネックが解消されるかもしれません。 ただしクライアントは改造され得るものなので サーバ・クライアント間で転送したデータは 常に正当性を検査するようにしましょう。

JavaScript で高機能なサービスを作る場合に 障害となるのではないかと私が考えていることがあります。 現在のブラウザ上の JavaScript の実装には スクリプト実行スレッドが一つしかないということです。 そのため複数の処理を並列に行うことが出来ません。 AJAX Web サービスで複雑な計算を行わせると UI が反応しなくなるものがあるのはこれが原因です。 一応、単コアの CPU がマルチスレッドを実行するときと同じく 作業を分割して交互に実行するようにコード変換を行えば 擬似マルチスレッドも達成できます。 変換にも切り替えにもそれなりのコストがかかるでしょうし、 プリエンプティブなものを作ることは難しいと思います。

そこで思いついたことがあります。 Java Applet を計算サーバに出来ないかという案です。 JavaScript は UI と仕事の割り振りだけを担当して 実際の計算は非同期に Java Applet へ投げる訳です。 Java Applet は別のスレッドで動作していますし、 計算自体もはるかに速いですからあり得るかもと思ったのです。 特にサンプルを作ってみた訳ではないので 実行速度や開発効率が優れているかどうかは判りません。 Java Applet の使えない環境の方の場合には アプリケーション・サーバに投げれば良いのでしょうか。 ううん、やや無理のある計画だったかも。

前のページ(サンプル BBS)へ / 次のページ(COMET)へ