.NET Frameworkには多くの「フレーバー」があります。
- フル(「通常」)
- クライアントプロファイルサブセット
- WebブラウザーのSilverlight
- Windows Phoneの「Silverlight」
- コンパクトなフレームワーク
- WinRT
新しいプラットフォームでC#コードが必要な場合、MicrosotはBCL内の既存のアセンブリを使用するのではなく、完全なCLRを取得して小さなサブセットにストリップし、新しいアセンブリを作成して型を移動することを好むようです。 。たとえばSilverlightはList<T>
、WPF と同じ実装を単に参照するのではなく、WPFに対して異なるクラス/メソッド(わずかに異なるシグネチャまたは非常に異なる実装を持ついくつかのメソッドにさえ)を持っています。
これは理想的なアーキテクチャですか、それともレガシーの兆候ですか?BCLをすべてのプラットフォームで実行し、それぞれに異なるプレゼンテーション/ IOライブラリを使用する必要はありませんか?または、BCLと他のライブラリが肥大化していて、それらを分割すると、多くの下位互換性の問題が発生し、受け入れられなくなりますか?
空白のキャンバスから始めて、下位互換性について心配していなかったとしたら、現在の状況が実際に複数のプラットフォームを処理する最良の方法でしょうか?