Perl で継続 - Continuity

ウェブアプリを作っていると,セッションデータを覗きつつ管理しつつ処理フローのどこにいるのか自覚しながら全体を作り上げるのがめんどくさくなってきます。

  • セッションデータサーバ(memcached 的な),があればいいんじゃね?
  • セッション管理サーバ(認証等も含めて),があればもっといいんじゃね?
  • セッションごとにウェブアプリデーモンを立ち上げて,その後は同一セッションのクライアントはそいつと通信すればいいんじゃね(fastcgi 的)

なんて考えたりして

  • つーかそもそもウェブアプリのコードがリクエストドリブンなのが問題じゃん
  • ASP.NET みたくイベントドリブンなアプローチもあるよね
  • でも,昔懐かしのコンソールプログラムみたく直線的なコード書いたりしたいなぁ

暇になったらそういうコードを書いてみるのも面白いかなぁ…

と,思っていたら,とっくの昔にありました。

実のところ昨日言及した Piece Framework のドキュメントを読んでいて,developerWorks「継続」に関する文書があるのを知り,Continuity を知ったわけですが。


便利そうな反面,

  • 同時接続ユーザ数「ではなく」同時セッションユーザ数の多寡でリソースの食い方が変わりそう
  • ユーザの挙動をしばることはできない
    • 複数ブラウザウィンドウ(タブ)を開く
    • ブラウザの「戻る」「進む」ボタン
    • Ajax 等による非同期・独立処理
  • 複数のセッションを独立して持ちたい場合どうすればよいのか

等々,いろいろ考えなければならない点がありそうです。

あと,HTTP サーバ限定だったらもったいないですね。Continuity::Adapt::ほげほげを変えてなんとかなったりするのかな。

インストールすらしてないのであんまりアレコレいうのもナニですが,アプローチとしては面白いなぁと思いました。

2006/10/03 追記

# 2006年10月03日 id:miyagawa jifty?

Jifty*2 ってなんとなく HTML::Mason をビューに使ったフルスタックなフレームワークというイメージしかありませんでした。たしかに Continuations って書いてるし!ポニーかわいいし!

両者とも使ってないんであれですけれど,Jifty のほうはユーザエクスペリエンスとしての連続性というかステートレスなの重視,Continuity はプログラムを書く上での連続性重視,という気がしました。例(http://continuity.tlt42.org/Counter_Example)とか見ると特に。

*1:イントロダクションとしては昔のページ(http://thelackthereof.org/wiki.pl/Continuity)のほうが短くてさくっと読める

*2:Jifty のチュートリアル和訳 by id:charsbar