1

私は、まだ終わっていない新しいプロジェクトにWPFを使用しています。趣味のプロジェクトでとても便利なプロジェクトです。

クロスプラットフォームの互換性(つまり、Linux + Mac + Windows)が欲しいのですが、Windowsが主なターゲットです。私はWeb言語とC#とErlangはかなり得意ですが、C / C ++はそれらの中にはなく、Javaは嫌いです。したがって、私にとってWPFを選択するのは自然な動きでした。

ただし、 http ://www.mono-project.com/WPFなどの多数のソースを読んだ後:

この時点で、WPFに関心のあるユーザーは、代わりにSilverlightを採用することを強くお勧めします。これは、ブラウザーの外部で使用できるようになり、クロスプラットフォームAPIと機能の豊富なセットを提供するためです。

アプリをSilverlightに移植して、代わりに使用する必要があるかどうか疑問に思い始めています。

いくつかの事実:

  • 私のアプリケーションは純粋なデスクトップアプリケーションであり、そうなることを意図しています。システムリソースへの低レベルのアクセスが必要です(ただし、.NETでは不十分なほど低くはありません)。
  • 3つのプラットフォームをサポートしたいのですが、Windowsが最大の関心事です。
  • 私は、C#と.NET、およびUIが宣言型であり、コードからクリーンな方法で分離され、豊富なユーザーインターフェイスを可能にするWPFと同等のものを好みます。

SilverlightはすでにMacで動作すると聞いていますが、Moonlightを介してLinuxのサポートが可能です。

WPFからSilverlightへの切り替えを検討する必要がありますか?また、どのような問題が発生する可能性がありますか?

4

2 に答える 2

3

まず、この答えを検討します。

重要な点は、(実際には)SilverlightはWPFのサブセットであるため、アプリケーションのユーザーベースがPC / Windowユーザーのみの場合、機能的にはSilverlightよりもはるかに豊富であり、デスクトップアプリケーションなので、ローカルマシンにすべてアクセスできます。Webベースのアプリケーションを開発する場合は、PCだけでなく、Macでもブラウザーで実行し、Silverlightで開発する必要があります。

私の意見では、 WPFが依然として最良の選択です。

于 2012-05-06T11:05:17.007 に答える
2

経験から、WPFのようにSilverlightでは機能しないものがあることがわかります。私が最近遭遇したいくつかのこと(もっとたくさんありますが):

  • バインディングは、希望どおりに機能しません。たとえば、WPFでは、デフォルトで、バインドされたプロパティはテキストフィールドのkeyUpで変更されます。Silverlightではそうではありません。Blurで更新されます。Caliburn.Microのようなフレームワークは、これを暗黙的に追加することでこれを修正します。
  • WPFにはAdornersと呼ばれるものがあります。これらは基本的に、サイズ変更、回転などの小さなUI要素を追加することを可能にします。デザイナーに通常見られるもの(ドラッグしてサイズ変更)。Silverlightでそのようなものを作成できますが、もう少し複雑です。
  • WPFについてはよくわかりませんが、Silverlightでは、Webサービスの呼び出しは最終的にUIスレッドで行われます。どこにでも設定できますが、実際の呼び出しとコールバックはメインスレッドで行われます。実行に時間がかかる可能性のあるWeb呼び出しの結果を処理するときに留意すべき点(私が間違っている場合は、誰かがこれを修正できます)。

新しいアプリケーションで作業する一般的な方法は、Silverlightで開始し、本当に必要な場合はWPFに移行することだと思います。また、SilverlightアプリケーションをwinRT / Metroに移植する方が少し簡単だと言われているので、それを確認することをお勧めします。

追加 さまざまな違いを説明するMSDNからのリンクは次のとおりです。http://msdn.microsoft.com/en-us/library/cc903925%28v=vs.95%29.aspx

于 2012-05-06T11:03:05.287 に答える