IIS で実行されている複雑なオブジェクト レイヤー (およびここでは焦点を当てていない WCF サービス レイヤー) を使用して、アプリケーションの中間層にキャッシュ/状態保持を導入しようとしています。キャッシング アーキテクチャとして memcached/enyim に落ち着いたため、これらのオブジェクトを効率的に (速度とスペースで) シリアル化する必要があります。
オブジェクト レイヤーには、次のような線に沿って、オブジェクト間の多くのポインターと相互依存性があります。
internal class SomeObj
{
private string attr1;
private int attr2;
private OtherObj otherObj;
private List<OtherOtherObj> otherObjs;
}
internal class OtherObj
{
//...more attributes
}
internal class OtherOtherObj
{
// you get the idea
}
すべてのフィールドが非公開であることに注意してください。また、ほとんどのオブジェクトは内部にあり、多くのプロパティは読み取り専用 (設定なし) またはユーザーの観点から設定を使用する (つまり、オブジェクトを「ダーティ」にする) ため、リハイドレーションでは使用できません。キャッシュが必要なタイプが数十あります。
私は protobuf-net と msgpack の両方の外観が好きですが、既存のアーキテクチャ (そのままでうまく機能する) をできるだけ変更せずに、シリアル化をできるだけ速く行う必要があり、これらの両方のように見えます。オブジェクト階層のサポートが制限されています。私は DTO タイプのシリアル化をよく理解していますが、キャッシュ用にオブジェクトをシリアル化する正しい方法を計画するのは初めてです。これらのツールの 1 つを使用できますか? 組み込みの .NET バイナリを使用してコンストラクターを操作し、独自の条件で属性とオブジェクトを再設定するのに行き詰まっていますか?
編集:最後の質問を明確にするために、「コンストラクターを制御し、属性とオブジェクトを自分の条件で再設定できるように、組み込みの.NETバイナリを使用して立ち往生していますか?