[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11038] EJB デザインパターンの version と Struts token との類似性



井上泰です。


第2回EJBデザインパターンの、versionの途中で時間切れになりました。
言いたかったことを整理し、説明を補いました。

「EJBデザインパターンのversionとStruts tokenとの類似性について」


疑問

versionは、Strutsのtokenに似ている。同じパターンとみなせないだろうか?


シナリオの共通点

* サーバーは、ある時点のステートを示すオブジェクトを作成する
* サーバーは、このステートをメモリ(DB)に保存し、クライアントに渡す
* クライアントは、ステートをそのままサーバーに返す
* サーバーは、返却ステートと保存ステートを照合する
 - 一致すれば、処理を許可する。保存ステートを破棄/変更する
 - 不一致ならば、処理を拒否する

# ステートを循環させ元のステートと照合するのは同じ
# クライアントにとってステートは不変Objectなので、mementoパターンに似ている

意味の相違点

* 目的
tokenは、画面遷移の順序を管理する
versionは、データ項目の整合性を管理する。(最初の更新だけを許すので順序性?)

* ステート
tokenの場合、実はクライアントのステートである
versionの場合、モデルのステートである

実装の相違点

* 永続性
tokenはメモリに存在するのでサーバー停止時に消失 (以前、根本さんが指摘さ
れました)
versionはDBに存在するのでサーバーの停止後も存在する

* 同期化
tokenはクライアント単位にスレッドセーフにする (Single Thread Modelの場合
は課題)
versionは更新前にDBのユーザで排他制御する

課題

似たようなパターンを調べてみたい
同じパターン、別のパターンとする、理由を考えたい


皆さんは、どう思われますか?



参考

Synchronizer Token (StrutsのTokenが引用されています)
Core J2EE Patterns 2nd Edition
http://www.amazon.co.jp/exec/obidos/ASIN/0131422464/qid=1078049012/sr=1-1/ref=sr_1_10_1/250-1021153-8339448
「J2EEパターン―明暗を分ける設計の戦略」 第1版
http://www.amazon.co.jp/exec/obidos/ASIN/4894714345/ref=sr_aps_b_3/250-1021153-8339448


Extension for Struts (tokenのクライアント単位の同期化の例です)
http://www-6.ibm.com/jp/software/websphere/developer/download/wasstx.html
com.ibm.jp.swg.stx.action.WsxSessionSyncTemplateAction