BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WPF vs. Silverlight – 真の違いは何か

WPF vs. Silverlight – 真の違いは何か

原文(投稿日:http://www.infoq.com/news/2009/11/WPF-Silverlight)へのリンク

WPFとSilverlightが重要になるにつれ、両者の違いについての混乱も増してきた。この問題に対してWintellect は6月に、"Microsoft WPF-Silverlight Comparison Whitepaper"と題するとても重要なホワイトペーパーを発表した。すべての開発者がこの文書を読むべきだ。ここでは、LOBアプリケーションを扱う開発者に対して影響がある主要な点についての要約を提供する。

どちらのプラットフォームでも依存関係プロパティは重要な仕組みだ。この仕組みの中でPropertyMetadataクラスがプロパティ機能を強化するために普通のフィールドの代わりに使われている。SilverlightではこのPropertyMetadataクラスひとつしか提供されていないが、WPFではいくつかのサブクラスも提供されている。

  • UIPropertyMetadataは、“メタデータのインスタンスが適用される依存関係プロパティでアニメーションを無効にするかどうか”を決定するフラグを追加します。
  • FrameworkPropertyMetadataは、依存関係プロパティがコントロールの配置や測定、描画などのパイプライン処理に影響を与えるかどうかを示すフラグを追加します。また、依存関係プロパティがデータバインディングが可能かどうか、既定のバインドが双方向であるかどうかを示すフラグも持ちます。Silverlightにはこのクラスがないので、既定ではすべてのデータバインディングは単方向です。

また、Silverlightはトンネリングイベントをサポートしていない。しかし、両プラットフォームともダイレクトイベントとバブルイベントはサポートしている。

WPFは数種類のトリガをサポートしている。基本的なトリガは、依存関係プロパティにアタッチさせることで条件が合致した時に自動的にスタイルの変更を適用することができる。これに加えて、WPFではルーティングイベントやデータバインディングをきっかけに動作するトリガもサポートしている。一方、Silverlightではトリガの代わりに、Visual State Managerと呼ばれる仕組みが用意されている。WPFにこの仕組みはないが、WPF 4.0では組み込まれる予定だ。

また、Silverlightがサポートしているマークアップ拡張は少ない。しかし、WPFは共有のStaticResourceや、Binding、 TemplateBindingのような拡張に加え、DynamicResource、RelativeSource、x:Type、x:Static、そしてx:Arrayというような拡張も使える。

キーボードやマウスのおびただしい数のイベントが使えるのはWPFだけだ。あまりにも数が多いのでここでは一覧できないので、原文を参照されたい。

UIElementクラスとIInputElementインターフェイス。コントロールが無効のとき、WPFはこのインターフェイスを使ってすべての子コントロールを無効にする。しかし、Silverlightではこのような振る舞いはしないので、開発者は手動でコントロールツリーを走査しなければならない。

通信に関して、SilverlightのWCFで使えるバインディングは、BasicHttpBindingとPollingDuplexHttpBindingだけだが、WPFはもちろんすべてのバインディングが利用できる。

最後にひとつ。印刷についてはWPFとSilverlightは完全に異なっている。WPFはビジュアルツリーを直接印刷できるが、Silverlightはブラウザに依存する。

この記事に星をつける

おすすめ度
スタイル

BT