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

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

----

[[フレームワーク]]の役割を[[フレームワーク/Webアプリケーション]]と[[フレームワーク/WikiEngine]]で分担。
#contents

-セッションの用意
[[ページ/セッション]]の基礎。ページ/要素が扱うのはページでできたセッション領域のほう。
-クライアントからのリクエストをフレームワーク/WikiEngineに渡す
→ [[全てURIで]]
-フレームワーク/WikiEngineからの出力をレスポンスにしてクライアントへ
レスポンスにはクライアントアプリのコードも含む。データ付きのクライアントアプリを送信。
-ログイン/ログアウト?
オープン認証なんかはWikiEngineよりもこちらで。→WikiEngineは外からユーザーオブジェクトを受け入れることになる。
-ユーザー情報の用意?
認証済みユーザーオブジェクトをフレームワーク/WikiEngineに与える。内容は空。認証に必要な情報しかない。WikiEngine側で情報補完してもらう。ユーザー情報/権限はページに記述するので。
-レスポンス待ち
数種類の出力バッファーを用意。グローバル変数に追加していく。HTMLヘッダー・bodyの冒頭・bodyの末尾・ページ内の記述された箇所(これが基本)など。ページ/要素でも(どこに書かれていても)HTMLヘッダー出力などができる。
*クライアントからのリクエストを処理 [#t9f2c0ae]
**リクエスト [#q689828f]

***[[全てURIで]] [#ffd874cb]
ページ名と要素部分はフレームワーク/WikiEngineでやること。
ここで行うのはそれ以前まで。
***フレームワーク/WikiEngine呼び出し [#m4a80a22]
リクエストをフレームワーク/WikiEngineに渡す。

RIGHT:[[:t/Web]] [[:t/Wiki]] [[:t/実装]]
**レスポンス [#t55ccd07]
***ログイン→HTTP_REFERERにリダイレクト [#edda8b6d]
ログイン後はHTTP_REFERRERのページへ。リファラーが同一ドメインでないなら既定のURIへ。 → [[:i/フレームワークの実装案]]
***[[:i/フレームワーク/WikiEngineからの出力をレスポンスにする]] [#g4057cb8]

**認証 [#qb08d8ea]
***ログイン/ログアウト [#i2fa612c]
オープン認証なんかはWikiEngineよりもこちらで。→WikiEngineは外からユーザーオブジェクトを受け入れることになる。
ログアウトも?
***認証とユーザーオブジェクトの用意 [#n8dac2c3]
ユーザー認証をして、認証済みユーザーオブジェクトを作る。作るのと破棄だけ。
一般的な情報…IDやパスワードはある。その他の内容はフレームワーク/WikiEngineが与える。内容がページになっているので。
***[[:i/アカウントの有効期限]] [#oedcaca7]

***フレームワーク/疑似言語コード・Perlコード [#zc781962]
***フレームワーク/出力の統合はどうやるか? [#ef44a1d2]
***フレームワーク/メモ化 [#x0e2ee71]

多段メモ化。
***ユースケーススコープ [#tf96b817]

***選べるビュー [#tad36558]
**セッションの維持・管理 [#y9fd0b6b]
%%[[セッション]]の基礎。ページ/要素が扱うのはページでできたセッション領域のほう。%%

リクエストとレスポンスの分離。
***フレームワーク/WikiEngineの実装案より [#z7ff3a7d]
WikiEngineではなくこちらで。
セッションを用意。
ページ/要素その他からのアクセスに応える。
**エラー対処 [#r1a046f9]

-ユースケースクラス
-ログイン→HTTP_REFERERにリダイレクト
-アクセスログはページに残す
→フレームワーク/Webアプリケーションのログファイルと、フレームワーク/WikiEngineのページに残すログは別。
5xx Internal Errorの対処も。

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

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

***変形MVC [#y6c63ec3]
#ref(:Image/MVC.svg,100%)
[[docs.google.com>https://docs.google.com/file/d/0B9sAsjPbXxUHdmJPc3hTR05SM0E/edit?usp=sharing]]
***[[:i/エラーページにクエリーを]] [#m55bafda]
HTTPのGETメソッドのときは…URLをデコードして表示するなら意味がある。

RIGHT:[[:t/MVC]] [[:t/Web]]
***[[:i/出力の統合はどうやるか?]] [#ef44a1d2]
*フレームワーク/WikiEngineから呼ばれて [#l81eb826]

***その他、あとで [#oc22926f]
**設定 [#q315f963]
***[[:i/Webアプリの設定はWikiページに書けない]] [#h8f9f582]
**ログ [#d913dad2]
-アクセスログはページに残す
フレームワーク/Webアプリケーションのログファイルと、フレームワーク/WikiEngineのページに残すログは別。
→ [[:i/フレームワークの実装案]]

:t/実装
**最適化 [#v7bfbe43]
***メモ化 [#x0e2ee71]
ページ/要素それぞれでメモ化すればいいのでは??
*そのほか [#od946e57]


***フレームワーク/エラーメッセージにクラス名 [#wfca3d21]
***Webアプリの設定はWikiページに書けない [#h8f9f582]


RIGHT:[[:t/Web]] [[:t/設定]]


***ビュー [#d5902bbd]


RIGHT:[[:t/レイアウト]] [[:t/ビュー]]