EOContextLayers

2007/03/30 (Fri) 22:07:46 JST

コンテキストのレイヤー

コンテキストは以下の4つのレイヤーによって管理されています。ここでいうレイヤーはアクセスレイヤーやコントロールレイヤーとは異なり、実装面から見たもの??ではありません。

EOFのオブジェクトは最終的にリレーショナルデータベースに保存されますが、データベースに接続?するのは最後のレイヤーのみで、それ以外のレイヤーはすべて抽象的なレイヤーです。変更したオブジェクトは3つのレイヤーを通って検証や整合性チェックが行われ、最後に具象的永??続化レイヤー (アダプタ) によってデータベースに保存されます。データをフェッチするときはその逆の作業が行われます。

図:4つのレイヤー

なお、このコンテキストレイヤーは私が勝手に名付けたものです。抽象的・具象的永続化レイヤーは、EOFのドキュメントではそれぞれアクセスレイヤーのデータベー?スレベル・アダプタレベルとなっていますが、それだとRDBMSと混同しそうなのでこのような名前に?しました。

編集レイヤー

このレイヤーではオブジェクトの取得、編集を行います。オブジェクトはオブジェクトグラフ(EOObjectGraph)により管理され、オブジェクトの自由な編?集や破棄が可能です。

このレイヤーは編集コンテキスト (EOEditingContext) として実装されています。

整合レイヤー

編集レイヤーと抽象的永続化レイヤーの橋渡しを行います。両レイヤーを管理するオブジェクトはコーディネータと呼ばれ、基本的にアプリケーションに1つ??のオブジェクトが存在します。

編集レイヤーから送られるメッセージは、すべてコーディネータを介して下位レイヤーに渡ります??。コーディネータは複数の抽象的永続化オブジェクトと協調し、編集レイヤーと共にオブジェクトの??整合性を保つようコントロールします。

このレイヤーはEOObjectStoreCoordinatorとして実装されています。

抽象的永続化レイヤー

スナップショット (EOSnapshot) によってオブジェクトとデータ行の整合性を管理します。データベースからフェッチしたデータのスナップショットを生成したり、変更があったオブジェク??トをスナップショットと比較してからデータベースに保存します。このレイヤーではデータベースへの操作命令が組み立てられるのみで、接続は行いません。

このレイヤーはアクセスレイヤーのデータベースレベルとして実装されています。

具象的永続化レイヤー

最終的にデータベースを操作するのはこのレイヤーです。上位レイヤーで組み立てられた命令を各データベースに合わせて変換します。このレイヤーの役割はデータベースの操作で、上位レイヤーで管理されるオブジェクトの整合性には関知しません。

このレイヤーはアクセスレイヤーのアダプタレベルとして実装されています。


Inverse Pages: WebObjects基礎研究室