BT

WAFとCaliburn:ふたつのWPFアプリケーションフレームワーク

| 作者: Abel Avram フォローする 11 人のフォロワー , 翻訳者 徳武 聡 フォローする 1 人のフォロワー 投稿日 2010年9月8日. 推定読書時間: 3 分 |

原文(投稿日:2010/08/19)へのリンク

WPF Application Framework(WAF)とCaliburnのふたつはオープンソースフレームワークであり、WPF/Silverlightアプリケーションを作成する開発者のために、レイヤアーキテクチャを使ったモデル-ビュー-ビューモデル(MVVM)パターンに基づく基盤を提供する。

WAFはモデル-ビュー-ビューモデル(MVVM)パターンを使っている。このパターンはMartin Fowler氏が定義したプレゼンテーションモデルにとても似ている。WAFで使われているこのパターンは下記のUMLダイアグラムであらわすことができる。

Model-View-ViewModel Pattern

View – このクラスはすべてのGUI部品を保持するが、その状態や振る舞いは持たない。

IView – Viewクラスのインターフェイス。

ViewModel – GUI部品の状態と振る舞いを保持する。状態や振る舞いをここで保持するのは、アプリケーションのコードとGUIインターフェイスの結合が強くなるのを防ぐためだ。そうすることで他のGUIアプリケーションへの移植が簡単にできる。ViewModelはインターフェイスを通じてViewとやり取りをする。

Controller – MVVMパターンではControllerについてはなにも定義していないが、WAFにはコントローラが存在する。アプリケーションの流れを制御するのがControllerの役目だ。必要であれば、ViewModelがイベントを使ってコントローラに変更を通知する。

Model – 基礎となるドメインクラス。Model内の変更はイベントを通じてViewやViewModelに通知される。

WAFは下記の図のようなレイヤアーキテクチャを考慮して実装されている。

layered-architecture.png

このフレームワークには基本となるクラス/インターフェイスが含まれており、アプリケーションに適切に適用するために拡張することが想定されている。たとえば、Controller、IView、ViewModel、Model、そしていくつかのファイルダイアログやメッセージサービスクラスだ。また、図書管理システムやメールクライアント、ドキュメント指向アプリケーションのサンプルを含む。単体テストも基本的にサポートする。WAFをCodePlexに提供したのはjbe2277氏だ。氏は身元を明かしていないが、Microsoft pattern&practicesのSmart Client Contribチームの開発者のようだ。

CaliburnはWPFとSilverlight向けのもうひとつのフレームワークだ。このフレームワークもMVVMパターンを中心に構築されている。このプロジェクトのウェブサイトでは下記のように特徴を説明する。

  1. メソッドをモデルにバインドできるようにすることで、MVVMアーキテクチャをシンプルで直感的にする。
  2. MVVMのアクションの前後に任意の実行フィルタや救済的な処理を追加できる。
  3. コルーチンの強力な実装によって非同期プログラミングを単純にする。
  4. Screen Activator、Screen Conductor、Screen Collection、そしてApplication Controllerのような一般的なUIの役割をサポートする基本クラスを提供する。
  5. 課題解決策の設計には、設定より規約による方法を使う。
  6. WPF向けの強力なデータバインディング検証フレームワークを使うことでTDDを支援する。
  7. WPFとSilverlightのアーキテクチャで同一のAPIを利用できる。

このフレームワークは多くの点でWAFと似ているようだが、より成熟した100を超えるクラスやインターフェイスを含み、SilverlightとWPF向けの予定管理システムとゲームライブラリのサンプルも含んでいる。また、CaliburnはBlue Spire社が支援している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT