10

データベースでシリアル化したままにしておきたいオブジェクトを含むアプリケーションがあります。
現在使用していますNetDataContractSerializerが、最近、関連する.Netタイプ情報のために、基本的なオブジェクトであっても、アプリケーションが遅くなることを意味する巨大なファイルが作成されることがわかりました。
代わりに切り替えることを検討しDataContractSerializerており、2つの比較を探していましたが、1つは見つかりませんでした。

  • 2つによって作成されたオブジェクト間のサイズの違いは何ですか?
  • パフォーマンスに大きな違いはありますか?
  • List<X>を含むオブジェクトがあり、X他の複数のオブジェクトに継承されているため、実行時にリストに多くの異なるタイプが含まれている場合、それらのいずれかに問題がありますか?(属性をDataContractSerializer指定できると言われましたが、これはコード内の依存関係が増えることを意味します。ソリューションでそのすべてのタイプを知る方法はありますか?) KnownTypesDataContractSerializer

ありがとう。

4

1 に答える 1

12
  1. NetDataContractSerializer(NetDCS)は、すべてのオブジェクトのタイプ情報を書き込みますが、DataContractSerializer(DCS)は、必要なオブジェクトのみを書き込みます(つまり、メンバーをタイプBとして宣言し、シリアル化されたときのメンバーの実際の値はタイプDです。 、ここで、DはBから派生したタイプであるため、DCSでシリアル化されたタイプの「ノイズ」ははるかに少なくなります。
  2. 実際にはそうではありませんが、シナリオで両方を試して、影響があるかどうかを確認する必要があります
  3. DCSで既知のタイプを使用する必要がありますが、DataContractResolver既知のタイプで作業したくない場合はを使用できます。このようなリゾルバーの例は、Youssef Massaouiのブログにあります。リゾルバー自体の詳細については、WCFの拡張性に関する私の投稿(http://blogs.msdn.com/b/carlosfigueira/archive/2011/ )を参照してください。 09/21/wcf-extensibility-data-contract-resolver.aspx
于 2011-10-27T21:19:40.380 に答える