論文を読んで、自分の継続CGIを改造してみた。
本題
これまでのような、コンソールライクなWebプログラミングだと、dispatchパターンが頻出します。こんなん。
(let ((req (cgi-get-parameter "value" (show (html:html ...))))) (case req ...
で、
に、send/suspend/dispatchという話があって、WebプログラミングはコンソールというよりはGUIなのだから、それに応じて、リンクごとに継続を仕込めるほうが便利じゃね、そうすればクエリパラメータから値を取り出してうんぬんなんて低レベルなことを意識せずにすむよ、と。
論文のほうは、それを escape continuation を使ってより軽量にやるらしいんですが、そこはちょっとわかりませんでした。なので単純に、いつも使っている継続テーブルに保存してます。
- 使いかた
- show でページ出力&ユーザの入力を待つ。(他では、send/suspend (論文)とか、sendPageAndWait(Cocoon)と呼ばれている)
- action で継続を仕込む
以前のsum.fcgiはこうなります。
続きを読む