试图在 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 类型的序列化,但是对于规划正确的方法来为缓存序列化对象是新手。这些工具之一可以为我工作吗?我是否坚持使用内置的 .NET 二进制文件来使用构造函数,并根据自己的条件重新填充属性和对象?
编辑:只是为了澄清最后一个问题——如果它读作“我是否坚持使用内置的 .NET 二进制文件以便我可以控制构造函数并按照我自己的条件重新填充属性和对象?