• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/Web]] [[:t/実装]]

[[フレームワーク/Webアプリケーション]]の実装案。

----

#contents

*構成 [#w31fd731]
→[[:i/疑似言語とPerlでフレームワーク]]

**MVC [#dbb64172]
***変形MVC [#y6c63ec3]
#ref(:Image/MVC.svg,100%)
[[docs.google.com>https://docs.google.com/file/d/0B9sAsjPbXxUHdmJPc3hTR05SM0E/edit?usp=sharing]]

RIGHT:[[:t/MVC]] [[:t/Web]]

***[[ユースケース]] [#vb5876c1]
ユースケースは機能拡張の中にもあるクラス。
プラグインの呼び出しに権限判定を付けるならユースケースクラスも必要。
ユースケース内で権限判定をするのでページを扱うということ。ページの扱いはフレームワーク/WikiEngineでやること。
→ユースケースはフレームワーク/WikiEngineでもある。

***[[:i/ユースケーススコープ]] [#tf96b817]
Controller = Usecase
その中だけで有効なデータ。

†[[:i/クラス別のセッションデータ]]

***[[:i/ユースケースチェイン]] [#b756a37d]
†[[:i/選べるビュー]]
リクエストとレスポンスの分離。
…を一般化して複数のユースケースを連鎖させられるように。

*リクエスト [#q689828f]
***[[全てURIで]] [#ffd874cb]
ページ名と要素部分はフレームワーク/WikiEngineでやること。
それ以前のドメインとWikiの指定までを受け持つ。

***リクエストをフレームワーク/WikiEngineに渡す [#m4a80a22]
RIGHT:[[:t/Web]] [[:t/Wiki]] [[:t/実装]]

**認証 [#qb08d8ea]
***ログイン/ログアウト [#i2fa612c]
オープン認証なんかはWikiEngineよりもこちらで。→WikiEngineは外からユーザーオブジェクトを受け入れることになる。
ログアウトも?

***ユーザーオブジェクトの用意 [#n8dac2c3]
認証済みユーザーオブジェクトを作る。作るのと破棄だけ。
内容はフレームワーク/WikiEngineが与える。内容がページになっているので。

***[[:i/アカウントの有効期限]] [#oedcaca7]


*レスポンス [#t55ccd07]
***ログイン→HTTP_REFERERにリダイレクト [#edda8b6d]

***[[:i/フレームワーク/WikiEngineからの出力をレスポンスにする]] [#g4057cb8]

**エラー対処 [#r1a046f9]
5xx Internal Errorの対処。

***[[:i/リクエスト再送はフレームワークで]] [#of9bf0c9]
利用者の情報損失を防ぐ。リトライ可能に。使いにくくなるのを防ぐ。

***[[:i/エラーメッセージにクラス名]] [#wfca3d21]

***[[:i/エラーページにクエリーを]] [#m55bafda]
HTTPのGETメソッドのときは…URLをデコードして表示するなら意味がある。

***[[:i/出力の統合はどうやるか?]] [#ef44a1d2]

*フレームワーク/WikiEngineから呼ばれて [#l81eb826]

**設定 [#q315f963]
***[[:i/Webアプリの設定はWikiページに書けない]] [#h8f9f582]
RIGHT:[[:t/Web]] [[:t/設定]]

**ログ [#d913dad2]
-アクセスログはページに残す
→フレームワーク/Webアプリケーションのログファイルと、フレームワーク/WikiEngineのページに残すログは別。

**セッションの用意と保存 [#y9fd0b6b]
**セッションの復元と永続化 [#y9fd0b6b]
%%[[ページ/セッション]]の基礎。ページ/要素が扱うのはページでできたセッション領域のほう。%%

ページ/要素その他が扱うセッションを用意。

**最適化 [#v7bfbe43]
***メモ化 [#x0e2ee71]
多段メモ化。