内置的基于BinaryFormatter的.Net序列化有哪些不足之处?(性能,灵活性,限制)
如果可能的话,请附上一些代码.
例:
要序列化的自定义对象必须使用[Serializable]属性进行修饰或实现ISerializable接口.
不太明显的例子:
匿名类型无法序列化.
如果你的意思是BinaryFormatter
:
基于字段,是非常不容忍的版本; 更改私有实现细节,它会中断(甚至只是将其更改为自动实现的属性)
与其他平台不交叉兼容
对新领域不是很友好
是特定于程序集(元数据被烧毁)
是特定于MS/.NET(可能是特定于.NET版本)
不是混淆安全的
不是特别快,或小输出
不适用于轻型框架(CF?/ Silverlight)
有一种令人沮丧的习惯,就是拉你没想到的东西(通常是通过event
s)
我花了很多时间在这个领域,包括编写一个(免费)实现Google的"协议缓冲区"序列化API for .NET; protobuf网
这是:
输出更小,速度更快
与其他实现交叉兼容
扩展
合同为基础
混淆安全
装配独立
是一个开放的文件标准
适用于所有版本的.NET(警告:未在Micro Framework上测试)
有钩子插入ISerializable
(用于远程等)和WCF