[igdd] SilverlightのOut of Browser専用アプリを考えた場合、WPFとの使い分けはどう考えるべきでしょうか?WPFとSilverlightの使い分けについて教えてください。後にSaaSへの移行を考えると、WPFよりブラウザー外実行の方がよいですか?

まず、WPFとSilverlightの違いについては、MSDNライブラリに掲載されている「WPFとの互換性(Silverlight 3)、WPF Compatibility(Silverlight 4)」をご一読ください。

使い分けについては、最終的にはアプリケーションの要件に応じて選択いただくことになりますが、いくつかの指針を挙げたいと思います。推奨するものではありませんので、ご注意ください。

・ハードウェアの性能をフルに活用する場合は、WPF
SilverlightとWPFの機能差が少なくなっているように見られるかもしれませんが、3Dサポート、GPUによるレンダリング・Pixel Shaderサポートについては、WPFを選択する方がよいです。マルチタッチのサポートはWPF・Silverlightそれぞれありますが、WPFはUIElement単位でタッチをサポートするのに対して、SilverlightはクライアントレベルのTouchサービスでのみサポートされ、生のメッセージを取り扱うコードが必要となります。

・.NET Frameworkを制約なしに利用する場合は、WPF
DataSetを利用したい、同期による通信を行いたい、P/Invokeによるアンマネージコード呼び出しによるネイティブ統合/デバイスアクセスなど、従来のデスクトップ開発の延長で考える場合は、WPFがよいかもしれません。
一方、SilverlightではDataSetのサポートはなく、非同期による通信が必要です。WCF RIA Servicesを利用することで、開発生産性は高くなりますが、UIスレッドと通信スレッドが別に分かれていることなど、Silverlightのアプリケーション動作における制約を意識する必要があります。

・Webを起点にインストールされ・Webを起点に自動更新されるアプリケーションは、Silverlight
SaaS環境やインターネットでのWebサービスを活用するクライアント開発の場合、Silverlightの方が便利かもしれません。
ブラウザで実行されている時はインストールを促す画面にしておき、いったんインストールするとアプリケーション用の画面に切り替えるようなシナリオではSilverlightを選択するといいでしょう。
Silverlightのブラウザー外実行は、Webサーバーに配置されている新しいパッケージをダウンロードする機能をもっているので、定期的にチェックして、自動更新を行うアプリケーションを作ることもできます。

・Smooth Streaming、Deep Zoomを利用する場合は、Silverlight
この2つは現時点ではSilverlight固有の機能です。