CGIの設計の話をしていた時に面白い話が出たのでメモ。
通常のCGIでは、MVCモデルを、
画面1 | form.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はあくまでもこれらのオブジェクトの保存と復帰だけを行うのはどうだろう。
画面1 | form.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がそれに答えると言う動作を繰り返す、イベントドリブンチックなコーディングができるのでは? と言ったお話。