各プラットフォームのUIレイヤーはまったく異なります。ただし、アプローチ方法には共通点があります。たとえば、C#/ VB / XAMLは、電話、Windows、デスクトップ(さらにはWeb:Silverlight)でも使用できますが、特定の機能、サポートされているプロパティなどに違いがあるため、単に「再コンパイル」することは困難です。
私の意見では、違いが分離されているパターンを採用するのが最善の策です。MVVMは、プラットフォーム全体のGUIアプリケーションの優れた候補です。ターゲットごとに異なるUIレイヤーが必要ですが、とにかくフォームファクター、ユーザーの期待などを利用する必要があります。いずれの場合も、コードはC#/ VB XAMLである可能性がありますが、多くの構成要素とアセットが再利用されます(コピーアンドペーストを使用する場合でも)。内部のビジネスオブジェクトレイヤーであろうとクラウド内のWebサービスであろうと、舞台裏では「配管」はまったく同じである可能性があります。
バックエンドに関しては、プラットフォームの違いもあります。これは、ポータブルクラスライブラリが特に将来の取り組みのために軽減するのに役立ちます。将来的にも、Windows 8 Shared Coreのような発表は、このような仕事をより簡単にすることを約束します。
WPFやSilverlightなどのプラットフォーム間で再利用するための投稿やガイダンスが多数あり、テーマの多くは類似していますが、詳細はターゲットプラットフォームに固有ではない場合があります。ここでは、アプローチを組み立てるのに役立つ可能性のあるものをいくつか紹介します。ここでも、「Silverlight」の使用に焦点を当てるのではなく、記事で取り上げた手法と懸念事項に焦点を当てます。
SilverlightとWPF間でコードを共有
する既存のSilverlightコンポーネントをWindowsPhone7で再利用する