WPF とは?
このサイトではマイクロソフトの次世代ウェブアプリケーションプレゼンテーション基盤である WPF について説明します。
「プレゼンテーション」というのは平たく言えば「UI」のことです。 WPF というのは優れた、高度なユーザーインターフェイスを持つアプリケーションを開発する体系といえます。
WPF の設計目標
WPF は動的なデータドリブンなプレゼンテーションシステムとなるよう設計されました。
今までのアプリケーションは、アプリケーションの表現形式 (UI) を作ってから、そこにデータをバインドします。 WPF ではあらゆる側面のものがデータバインディングの一形式として生成されます。
WPF を構成するコンポーネント
WPF は主に次のコンポーネントをベースにしています。
- PresentationFramework
- PresentationCore
- Milcore
最初の二つ、プレゼンテーションフレームワーク (PresentaitonFramework) とプレゼンテーションコア (PresentationCore) は CLR 上で動くマネージドコードとして実装されます。
Milcore はアンマネージドコードで実装されており、DirectX へのつながります。 DirectX はゲームのグラフィックスなどで利用される、大変高性能なグラフィックライブラリです。
WPF のグラフィックスの描画はすべて Milcore を通して(すなわち DirectX) を通して描画されるため、 ハードウェアの性能を最大限に引き出すことが可能です(少なくともそうしたことが考慮されています)。
スレッディング・ディスパッチャーオブジェクト
WPF のオブジェクトは大半が DispathcerObject から派生しています。 DispatcherObject によって並列処理、マルチスレッディング対応が可能になります。
ディスパッチャーとスレッドアフィニティ
WPF はシングルスレッドで実行するように設計されました。 しかし、特定のスレッドへのアフィニティを持たないように配慮されて設計されました。
ちなみに、スレッドアフィニティというのは、特定のスレッドでの実行を要求するような状況です。 たとえばスレッドの状態をスレッドローカルストレージ (TLS) などの、 特定のスレッドからしかアクセスできない場所に保存するとアフィニティが生まれてしまいます。
よりリッチなプロパティシステムとしてのディペンデンシーオブジェクト
CLR のプロパティシステムよりもよりリッチなプロパティシステムとして、 ディペンデンシーオブジェクト (System.Windows.DependencyObject) が導入されました。