可能性のある複製:
WPFとSilverlightアプリケーションの違いは何ですか?
WPFとSilverlightの正確な違いは何ですか?
それは非常に広範な質問です。私の会社は最近、2つの技術の違いを概説するホワイトペーパーを作成しました。これは約70ページです。残念ながら、まだ公開されていないか、リンクを提供します。
編集:約束どおり、Codeplexのホワイトペーパーへのリンクは次のとおりです。
http://wpfslguidance.codeplex.com/
ただし、まとめてみます。
WPFは、完全な.Net FrameworkにアクセスできるシックなWindowsクライアントプラットフォームです。 Silverlightは、.Net Frameworkのサブセット(CoreCLRと呼ばれる)にアクセスできるブラウザーベースのテクノロジーです。そのため、フレームワーク内で毎日のように見えるメソッドとオブジェクトを使用すると、違いがわかります。たとえば、StringクラスのSplit()メソッドには、Silverlightでは3つのオーバーライドがありますが、.Net Frameworkでは6つのオーバーライドがあります。このような違いがたくさん見られます。
WPF内では、視覚的なレンダリング要素はすべてVisual基本クラスから派生します。 Silverlight内では、そうではありません。代わりに、コントロールから派生します。ただし、どちらのテクノロジーも、最終的には階層のDependencyObjectクラスから派生します。
WPFは、現在、Silverlightよりも多くのユーザーコントロールを出荷または利用できます。ただし、この違いは、Silverlight ToolkitおよびSilverlight 3の今後のリリースで緩和されています。
WPFは、3種類のルーティングイベント(直接、バブリング、トンネリング)をサポートしています。 Silverlightは、ダイレクトおよびバブリングのみをサポートします。
次のバージョンのSilverlightでは、データバインディングの違いがかなり軽減され、多少緩和されます。現在、Silverlightはバインディングモード、OneWayToSource、またはExplict UpdateSourceTriggersをサポートしていません。さらに、Silverlightは、何も設定されていない場合、OneWayデータバインディングにデフォルト設定しますが、WPFは依存関係プロパティで指定されたデフォルトモードを使用します。
SilverightはMultiBindingをサポートしていません。
SilverlightはXmlDataProviderをサポートしていますが、ObjectDataProviderはサポートしていません。 WPFは両方をサポートしています。
Silverlightは、非同期ネットワーク呼び出しのみを行うことができます。 WPFは、完全な.Netネットワークスタックにアクセスでき、あらゆる種類の呼び出しを行うことができます。また、現在、SilverlightはSOAPをサポートしていますが、SOAP fault例外をネイティブに処理できません(これはSilverlight 3で変更される可能性があります)。
暗号化には大きな違いがあります(Silverlightには名前空間に20のクラスがありますが、WPFは107にアクセスできます)。基本的に、Silverlightは4つのハッシュアルゴリズムとAES暗号化プロトコルのみをサポートします。
Silverlightは、コマンド、検証、印刷、XPSドキュメント、音声、3D、フリーズ可能オブジェクト、またはWindowsデスクトップとのInterOpをまだサポートしていません。これらはすべてWPFで利用できます。
Silverlightは、ブラウザーの相互運用、タイムラインマーカーなどのメディアストリーミングオプション、およびディープズームをサポートしています。 WPFはまだこれらの機能をサポートしていません。
70ページのドキュメントを箇条書きにしようとしていたので、これは決して完全ではありません。
最後に、これらすべての違いがあるにもかかわらず、Microsoftは2つのテクノロジーのギャップを埋めようとしています。 Silverlight ToolkitとWPF Toolkitは、どちらも各テクノロジーの欠点のいくつかに対処しています。 Silverlight 3では、現在利用できない多くの機能(要素間データバインディングなど)が追加されます。ただし、コアライブラリの違いにより、常にいくつかのフレームワークの違いがあります。
WPFは、.NetフレームワークでWindowsアプリケーションを開発するためのWindowsデスクトップテクノロジーです。
SilverlightはWebテクノロジーであり、WindowsとMACの両方のブラウザープラグインによって完全にサポートされます(Flashと同様の方法で)。 Linux(Moonlight)でSilverlightを実行するためのプラグインもあります。
WPFとSilverlightの両方で提供される機能には類似性がありますが(ユーザーインターフェイスコンポーネントとXAMLのサポートに関して)、Silverlightは非常に小さなフレームワークであり、WPF機能のサブセットを含んでいます。 Silverlightの新しいバージョンには、実際にはWPFにはない機能が含まれているため、真のサブセットではなくなりました。
SilverlightにはないWPFの機能:DirectXに基づくフル3Dエンジン、Windows 7タスクバーサムネイルなどのWindows統合、システムレジストリの可用性、およびOracleデータベースサポートを含む.NET Frameworkへのアクセス。また、SLは、WPFアプリが完全なシステムアクセスで完全な信頼を実行できるファイルシステム全体などへのアクセスを防ぐ安全なサンドボックスで実行されます。
前述のように、SLは、MicrosoftがサポートするWPFツールキットを介してWPFに二次的に組み込まれているVisualStateManagerなどのいくつかのテクノロジーを開拓しました。
プロジェクトに適したテクノロジーを判断したい場合、簡単に確認できます。Webから切断された状態で実行するアプリを作成している場合、または必要なアプリを作成している場合上記のようなWindows固有の機能にアクセスする場合は、WPFが最適です。プラットフォームに依存しない、Web対応アプリの場合、Silverlightが適切な選択肢です。ほら.
FlexとAdobe Airの違いに[非常に]似ていると言えますが、それはやや誤解を招くかもしれません。
WPFは、.NET Framework 3.0以降のユーザーが画面に描画するためにアクセスできる一連のテクノロジ(APIを介して公開される)を指します。
Silverlightアプリでは、多くのWPF APIを利用できます。
SLアプリは画面に描画するだけでなく、さらに多くのことを行う必要があるため、Silverlightで使用可能なWPF以外にも多くのAPIがあります。