【发布时间】:2012-11-25 14:44:27
【问题描述】:
尝试将缓存/状态持久性引入应用程序的中间层,该应用程序具有在 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 二进制文件以便我可以控制构造函数并重新填充属性和以我自己的方式对象?
【问题讨论】:
标签: .net serialization memcached protobuf-net msgpack