オブジェクトを以降のリクエストでも、他の利用者にも使えるようにすること。

永続化でやること Edit

実装案。

永続化での上書きは追加で[?] Edit

古いファイルは消せるときに消す Edit

古いファイル(同一キーでより新しいファイルがあるというファイル)を消すのはいつでもいい。消せるときに。
つまり最新版でなくて排他的ロックを取得できたファイルは消していい。

排他的ロック/共有ロック Edit

排他的ロックを使うのはファイルを作るときと消すときだけ。
変更/上書きはしないのでN/A。
共有ロックを使うのはファイルを参照するとき。

ファイルを消すときだけブロックロック待ち)が発生しうる。

ロックはロックシステム[?]と競合してはいけない。
→併用するならディレクトリ分け。永続化可能オブジェクトとロックシステムで扱うファイルの格納場所を分ける。

永続化のキー Edit

Validateで削除か置き換えになる文字がある。
ファイルシステムのパスに使えない文字。

ディレクトリ区切りはそのままディレクトリ区切りになる。
ファイルシステムを直接見たときに分かりやすいように。

【パスの形式】
永続化ディレクトリ/クラス名/キー(ディレクトリ区切りがあればそれをディレクトリとして扱う).time.拡張子

Store時、渡されたキーが使えるキーでなければ勝手に変更する。ValidateKeysを使って。
Storeではキーが渡されなくてもいい。勝手に生成する。
戻り値に実際に使ったキーを含める。

シリアライズ Edit

Store時、シリアライズ可能なオブジェクトを渡されたらそのシリアライズを実行。不可能ならToString()でもしておく。それも不可能ならエラー。渡すオブジェクトはいずれかができなければならない。
(Stringのシリアライズは不要。Stringのシリアル形式はString)

永続化クラスでの検索[?] Edit

検索機能とは別の、低いレベルの話。

キューイング Edit

永続化を使う側の一つ。永続化からすると使われ方の例。
†キューはModelに出すもの
†キューの永続化