Markdown展開

2012年5月28日月曜日

Apache WicketにMVVMを適用する

Apache WicketとはWebアプリケーションフレームワークの一つで、
ピュアHTMLとJavaで動的なWebページを作ることの出来るフレームワークです。

一方MVVMとはアプリケーションの設計モデルの一つで、
マイクロソフトのWPFやWindows Formと非常に相性がいい設計モデルです。


最近ウェブサイトを作る機会があったので、
久々にWicketを触るのと同時に、設計モデルとしてMVVMを適用してみました。


MVVMを適用することで、ロジックや画面構成と、画面デザインや画面関係のフレームワークとを完全に分離することができます。
例えば、綺礼にMVVMを適用したWindows Formアプリケーションは、ロジックを全く書き換えずにViewだけをWPFに置き換えることが出来ます。






適用の前にMVVMについて軽く記述しておきます。

MVCがModel-View-Controllerの3つに分かれているのに対して、
MVVMはModel-View-ViewModelの3つに分かれています。

ModelとViewの意味は、MVCでもMVVMでもほぼ同じです。

・Model→データ及び業務ロジック、つまりオブジェクト
・View→画面デザイン


MVCではこれにControllerが加わります。

・Controller→Viewの構築やModelの更新

一方で、MVVMのViewModelとはViewを構成するModelという意味です。
一つのViewにつき一つのViewModelを紐付け、互いに交換可能です。


詳細についてはWPFやMVVMについての別の記事を参照してください。




さて、このMVVMをWicketに適用すると、おおよそ以下のようになります。

・Model→業務ロジック・エンティティ・Daoなど
・View→htmlおよびそれに対応する.java・ViewModel→Viewに割り当てるDefaultModel

ViewのjavaでViewModelを生成してDefaultModelに割り当て、CompoundPropertyModelで画面に表示します。
リンクやフォームなどの操作は、ViewModelのCommandを通して行います。
画面遷移については通常通りViewが行います。




以上、思いついたとおりに書き殴ったので分かりにくい点が多々ありますので、
そのうち実際のパッケージ構成なり画像なりを加えて再構成したいと思います。

0 件のコメント:

コメントを投稿