Model-Glue:Unityの新機能
Joe RinehartがAdobe's Developers Weekで実施したModel-Glue:Unityのプレゼン内容を、Brian Rinaldiが彼のブログで紹介しています。
彼のプレゼンは、まだAdobeサイトにアップされていないので、Brian RinaldのブログからModel-Glue:Unityの新機能を読み取ってみます。
1.Model-Glue1.1との完全下位互換
- Model-Glue1.1は、第二世代のフレームワークである。
即ち、MVCアーキテクチャを使って、プレゼンテーションからモデル層を分離することがその目的であった。
しかしながら、beans/Records、DAOs、Gatewaysなどの共通タスクを取り扱う繰り返しのコードを生むことになった。
- Model-Glue:Unityは、第三世代のフレームワークである。
モデル層における単調な繰り返しコード生成作業を自動化する。
2.他のフレームワークとの統合
- 第三世代フレームワーク化推進のため、他のフレームワークとの統合を図った。
ColdSpring
サードバーティサービスの統合と依存性の注入(DI/IoC)をの実現。
依存性の注入は、Model-GlueとReactorのコンフィグ情報をColdSpring.xmlに記述することで実現。
Reactor
ORMの自動化に、Reactorを採用。
ModelGlue自身が実装したData Controllerを使って、イベントハンドラー内の<message>タグでGDMと呼ぶメッセージを記述して、DAOやGatewayを呼び出す。
- ModelGLue.GenericList(Gateway)
- ModelGLue.GenericRead(Read)
- ModelGLue.GenericCommit(Create&Update)
- ModelGLue.GenericDelete(Delete)
ORM用フレームワークには、Reactor以外も利用可能であるが、自分自身でcustom adapter, DataController, 及びscaffold .XSL を作成する必要がある。
3.Scaffolding
- XSLによるカスタマイズ可能なHTMLの "scaffolds(足場)"を実現。
- ModelGlue.xml内の<event-handlers>タグ内に<scaffold>タグを定義すれば良い。
- <Scaffold>タグにより、5つのイベントを作成可能。
- マスターリストの表示(table.list)
- レコードデータとリレーションデータの修正フォームの表示(table.edit)
- レコードデータの読み出し専用ビューの表示(table.view)
- レコードデータの更新(table.commit)
- レコードデータの削除(table.delete)
- <Scaffold>タグ内には、<Broadcasts>、<Results>、<Views>タグを記述可能。
- <Scaffold>タグの属性に、typeを指定することで、作成するイベントハンドラータイプを指定可能。
4.レコードデータのAutoValidation
- GDMのGeneric.Commitで、<arguments>タグにname="validationName"を指定することにより、自動的にValidateを実行できます。(より複雑なValidateのカスタマイズは、Reactorが自動生成するDAOオブジェクトを拡張する必要がありますが・・・)
最後に、Joe Rinehartのビデオデモも参考になるので、一読をお勧めします。
コメント