Catalystでのセッション管理はどれがいいのだろう
Catalystをちょっとやり始めている。
シスコのHUBの方はデータセンター内で他者さんのラックで使われているのをよく見ます。
うちは使ってないけど。管理機能は別としてすぐに代替が可能なお手頃なHUBの方がうちの運用にあっているんじゃないかと思うのだがごもごもごも。。
んで、勉強にCatalystでアプリケーションを作るのにあたって、セッション管理をどうしたらいいのか調べ中。
プラグインが4つほどあるんですよね。
Catalyst::Plugin::Session::FastMmap
Catalystの制作者のプラグイン。データの保存には、Cache::FastMmapを使う。セッションキーのリダイレクト時の書き換え機能やHTML上のリンクへの埋め込み機能もある。FastMmapはけっこう速いらしい。たぶん一番ベーシック
Catalyst::Plugin::Session::CGISession
CGI::Sessionを利用する。CGI::Sessionで使えるdriverが使えるので、mysql、postgresql、sqlite、file、db_fileとよりどり。インターフェイスとリンク埋め込みなどはFastMmapに準じた設計
MyApp->config->{session}->{cgis_dsn} = 'driver:mysql;'; MyApp->config->{session}->{cgis_options} ={ Handle=>MyApp::M::CDBI->db_Main };
とかで行けると書く事が少なくていい。ただPodやソースにいろいろ書いてあるのがなんかアレゲ。
Catalyst::Plugin::Session::Flex
Apache::Session::Flexを用いた実装。FastMmapに準じた設計。今CGI::SessionとApache::Sessionを選択する場面だったらCGI::Sessionを選ぶかなぁ。
Catalyst::Plugin::Session::Manager
Lost-SeasonのKatoさんのモジュール。関連エントリー。Sledgeライクなセッション管理で、CookieとURL埋め込み、StickyQueryが選択可能。StorageもFile、FastMmap、Class::DBIが使える。他との連携を考えるとClass::DBIは楽ができそうだと思ったり。
MyApp->config->{session} = { storage => 'CDBI', session_class => 'MyApp::M::CDBI::Session', expires => 3600, }
結局どれにするか決まらない。FastMmapで行っておくかな。
Sessionと認証を組み合わせる必要がある場合はqootas.orgのせきむらさんのエントリー「Catalystで Authentication」が参考になる。