3

SerializableAttribute が Silverlight バージョンの FCL に含まれていないのはなぜですか?

また、 BinaryFormatter もそこにはありません。

私は別の解決策を探しているわけではありません。事実に興味があるだけです。

バイナリ シリアライゼーションは、Silverlight の設計ルールの一部に根本的に反していますか?

4

1 に答える 1

1

まず、Silverlight にはさまざまなパーミッション ルールがあり、プライベート フィールドを取得するのははるかに困難です。もちろん、FCL の設計者にとっては、これが問題になるとは思いません。ランタイムにコーディングすることもできます (ただし、サンドボックスを回避する潜在的な方法を再作成します)。

おそらく重要なのは、Silverlight が "リモート処理" をサポートする必要がない (または望んでいない) ことです。これが、メインの .NET BCL に存在しなければならない主な理由です。もちろん、リモーティングは一般的に時代遅れですが、下位互換性のためにコア .NET に含める必要があります。

3 つ目の理由は、BinaryFormatter;の性質そのものである可能性があります。SL の多くのクラスは、さまざまな機能や利用可能なタイプ/セキュリティなどを考慮して、SL ランタイム内にさまざまな実装を持っています。そのため、サーバー コードと共有することはできません。

全体として、それをカットすることは非常に理にかなっています。app<===>サーバーの場合、コントラクト ベースのシリアライザーが存在します。そして、これらすべての問題を回避する (つまり、完全に移植可能である) バイナリ シリアライザーが利用可能です。

于 2011-04-18T09:27:03.117 に答える