Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

ステートフル

CGIの設計の話をしていた時に面白い話が出たのでメモ。



通常のCGIでは、MVCモデルを、


画面1form.html(V)
画面2→ form.cgi(C) → Logic.pm (M) → form.cgi → result.tpl(V)
画面3→ form.cgi(C) ・・・




と実現していると思われるが、そうではなく、Logic.pmとControl.pmとView.pmに分けて、form.cgiはあくまでもこれらのオブジェクトの保存と復帰だけを行うのはどうだろう。



画面1form.cgi(状態の作成) → View.pm
画面2→ form.cgi(状態の復帰) → View.pm → POSTイベント → Control.pm → Logic.pm → Control.pm → View.pm
画面3→ form.cgi(状態の復帰) ・・・




状態の保存と復帰さえ奇麗に実装出来れば、View.pmがPostイベントを送ってControl.pmがそれに答えると言う動作を繰り返す、イベントドリブンチックなコーディングができるのでは? と言ったお話。