我想实现一个序列化类这需要在一个对象,并把它转换成一个二进制流,并存储在一个文件中。 后来,对象应该从一个文件被重建。
虽然这个功能是由BinaryFormatter的在C#中提供的,我想从头开始设计我自己的序列化类。
有人能指出一些资源?
提前致谢
我想实现一个序列化类这需要在一个对象,并把它转换成一个二进制流,并存储在一个文件中。 后来,对象应该从一个文件被重建。
虽然这个功能是由BinaryFormatter的在C#中提供的,我想从头开始设计我自己的序列化类。
有人能指出一些资源?
提前致谢
我一直在使用boost ::序列化库,而现在,我认为这是非常好的。 你只需要创建这样的序列化代码:
class X {
private:
std::string value_;
public:
template void serialize(Archive &ar, const unsigned int version) {
ar & value_;
};
}
无需创建反序列代码(这就是为什么他们使用了和运营商)。 但是,如果你愿意,你仍然可以使用<<和>>运算符。
也有可能写一个类的序列化方法不修改(例如:如果你需要序列化来自库的对象)。 在这种情况下,你应该这样做:
namespace boost { namespace serialization {
template
void serialize(Archive &ar, X &x const unsigned int version) {
ar & x.getValue();
};
}}
我想给你一个否定的答案。 这是不太有用的,但它仍可能。
我一直在使用升压序列化了好几年,这是我公司最大的战略失误之一。 它产生非常大的输出,这是非常缓慢的,它传播了一大堆的依赖使一切编译不可能慢,然后就很难,因为你有现有的序列化格式脱身。 此外,在不同的编译器的行为不同,因此从升级到VS2005 2010实际上导致我们写一个兼容层,这也是很难堂妹的代码是很难理解。
以下是C ++系列化2个解决方案:
我个人只与第一次一个经验,实际上只用基于文本的序列化,但我知道,这是很容易定义的二进制序列化与S11N使用。
在C ++中间件作家可能会感兴趣。 它拥有超过在升压串行化库的性能优势 。 它还能自动的序列化功能创造。