SerializableAttribute が Silverlight バージョンの FCL に含まれていないのはなぜですか?
また、 BinaryFormatter もそこにはありません。
私は別の解決策を探しているわけではありません。事実に興味があるだけです。
バイナリ シリアライゼーションは、Silverlight の設計ルールの一部に根本的に反していますか?
SerializableAttribute が Silverlight バージョンの FCL に含まれていないのはなぜですか?
また、 BinaryFormatter もそこにはありません。
私は別の解決策を探しているわけではありません。事実に興味があるだけです。
バイナリ シリアライゼーションは、Silverlight の設計ルールの一部に根本的に反していますか?
まず、Silverlight にはさまざまなパーミッション ルールがあり、プライベート フィールドを取得するのははるかに困難です。もちろん、FCL の設計者にとっては、これが問題になるとは思いません。ランタイムにコーディングすることもできます (ただし、サンドボックスを回避する潜在的な方法を再作成します)。
おそらく重要なのは、Silverlight が "リモート処理" をサポートする必要がない (または望んでいない) ことです。これが、メインの .NET BCL に存在しなければならない主な理由です。もちろん、リモーティングは一般的に時代遅れですが、下位互換性のためにコア .NET に含める必要があります。
3 つ目の理由は、BinaryFormatter
;の性質そのものである可能性があります。SL の多くのクラスは、さまざまな機能や利用可能なタイプ/セキュリティなどを考慮して、SL ランタイム内にさまざまな実装を持っています。そのため、サーバー コードと共有することはできません。
全体として、それをカットすることは非常に理にかなっています。app<===>サーバーの場合、コントラクト ベースのシリアライザーが存在します。そして、これらすべての問題を回避する (つまり、完全に移植可能である) バイナリ シリアライザーが利用可能です。