1 |
<a href="http://www.infoq.com/news/2009/11/WPF-Silverlight">原文(投稿日:http://www.infoq.com/news/2009/11/WPF-Silverlight)へのリンク</a> |
1 2 3 4 |
WPFとSilverlightが重要になるにつれ、両者の違いについての混乱も増してきた。 この問題に対して<a href="http://www.wintellect.com/">Wintellect</a> は6月に、<a href="http://wpfslguidance.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28278">"Microsoft WPF-Silverlight Comparison Whitepaper"</a>と題するとても重要なホワイトペーパーを発表した。 すべての開発者がこの文書を読むべきだ。 ここでは、LOBアプリケーションを扱う開発者に対して影響がある主要な点についての要約を提供する。 |
1 |
どちらのプラットフォームでも依存関係プロパティは重要な仕組みだ。この仕組みの中で<a href="http://msdn.microsoft.com/en-us/library/system.windows.propertymetadata%28VS.100%29.aspx">PropertyMetadata</a>クラスがプロパティ機能を強化するために普通のフィールドの代わりに使われている。SilverlightではこのPropertyMetadataクラスひとつしか提供されていないが、WPFではいくつかのサブクラスも提供されている。 |
1 2 |
・<a href="http://msdn.microsoft.com/en-us/library/system.windows.uipropertymetadata%28VS.100%29.aspx">UIPropertyMetadata</a>は、“メタデータのインスタンスが適用される依存関係プロパティでアニメーションを無効にするかどうか”を決定するフラグを追加します。 ・<a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata%28VS.100%29.aspx">FrameworkPropertyMetadata</a>は、 依存関係プロパティがコントロールの配置や測定、描画などのパイプライン処理に影響を与えるかどうかを示すフラグを追加します。また、依存関係プロパティ がデータバインディングが可能かどうか、既定のバインドが双方向であるかどうかを示すフラグも持ちます。Silverlightにはこのクラスがないの で、既定ではすべてのデータバインディングは単方向です。 |
1 2 |
また、Silverlightはトンネリングイベントをサポートしていない。 しかし、両プラットフォームともダイレクトイベントとバブルイベントはサポートしている。 |
1 2 3 4 5 6 |
WPFは数種類のトリガをサポートしている。 基本的なトリガは、依存関係プロパティにアタッチさせることで条件が合致した時に 自動的にスタイルの変更を適用することができる。 これに加えて、WPFではルーティングイベントやデータバインディングをきっかけに動作するトリガもサポートしている。 一方、 Silverlightではトリガの代わりに、<a href="http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx">Visual State Manager</a>と呼ばれる仕組みが用意されている。 WPFにこの仕組みはないが、WPF 4.0では組み込まれる予定だ。 |
1 2 3 4 |
また、Silverlightがサポートしているマークアップ拡張は少ない。 しかし、WPFは共有のStaticResourceや、 Binding、 TemplateBindingのような拡張に加え、 DynamicResource、RelativeSource、x:Type、x:Static、 そしてx:Arrayというような拡張も使える。 |
1 2 |
キーボードやマウスのおびただしい数のイベントが使えるのはWPFだけだ。 あまりにも数が多いのでここでは一覧できないので、原文を参照されたい。 |
1 2 3 4 |
UIElementクラスとIInputElementインターフェイス。 コントロールが無効のとき、WPFはこのインターフェイスを使ってすべての子コントロールを無効にする。 しかし、Silverlightではこのような振る舞いはしないので、 開発者は手動でコントロールツリーを走査しなければ ならない。 |
1 2 3 |
通信に関して、SilverlightのWCFで使えるバインディングは、 BasicHttpBindingとPollingDuplexHttpBindingだけだが、 WPFはもちろんすべてのバインディングが利用できる。 |
1 2 |
最後にひとつ。印刷についてはWPFとSilverlightは完全に異なっている。 WPFはビジュアルツリーを直接印刷できるが、Silverlightはブラウザに依存する。 |
だいぶ突っ込んだ話になっているので、
中身を良く知らないとちんぷんかんぷんな内容になっていますが、
開発者の視点では把握しておくべき内容かと思われます。
元ネタはこちら。
http://www.infoq.com/jp/news/2009/11/WPF-Silverlight