アーキテクチャ
全体像
本フレームワークは、tkCGIApplication を中心に構成される。
入力: 環境変数、
stdin、sys.argvルーティング:
@app.route('/path')出力: HTML または JSON
補助: ログ、テンプレート、簡易認証、HTTP リクエスト
処理フロー
tkCGIApplicationのインスタンスを生成する。必要なら
configure()でログや設定ファイルを与える。route()デコレータでエンドポイントを登録する。run()を呼ぶ。run()は入力パラメータを取得し、actionで分岐してルート関数を呼ぶ。ルート関数は HTML 文字列・JSON 文字列・
tkHTMLElementを返す、または直接printする。
設計上の特徴
CGI だけでなく CLI 実行もある程度考慮されている。
printをリダイレクトし、未初期化時でも HTML ヘッダを出せるようにしている。ルーティング API を Flask 風に寄せている。
ビジネスロジックと Web 入出力を厳密には分離していないが、将来分離しやすい構造を残している。
制約
リクエストオブジェクトやレスポンスオブジェクトの抽象化は薄い。
WSGI 準拠ではない。
セッション管理は未実装または将来拡張前提である。
セキュリティは簡易用途向けであり、インターネット公開前提ではない。