用于序列化的二进制格式化程序

本文关键字:格式化 程序 二进制 序列化 用于 | 更新日期: 2023-09-27 17:56:54

我正在开发自己的远程桌面C#程序。我想知道我是否可以使用二进制格式化程序序列化我自己的对象例如,包含位图屏幕截图,鼠标链接和一些文本属性的"数据包"。然后客户端会反序列化它。从理论上讲,这可能是一种舒适的方法。可能吗?

用于序列化的二进制格式化程序

二进制格式化程序不是通过网络或持久存储进行序列化的好选择,它设计用于在同一台计算机内通信时的序列化。它非常不能容忍连接两端序列化对象中引用的任何程序集的版本差异,我个人在一台机器上没有应用 Windows 更新,导致双方无法通信。

相反,请使用更适合网络通信的序列化程序(如DataContractSerializer)或第三方二进制序列化程序(如ProtoBuf-net)。

这是可能的,但我不鼓励这样做。BinaryFormatter算法是专有的,因此使用此类数据编写 non-.NET 应用程序将非常困难。格式在过去已更改,将来可能会更改,因此将其用于希望将来使用新的 .NET 版本再次打开的持久性数据是不安全的。我认为BinaryFormatter最初是为在一台机器上的进程之间传递数据而设计的,而不是为了持久化数据。

对于包含多个属性的数据,BinaryFormatter效率低下,因为它需要反序列化整个对象才能访问任何字段。如果数据包含图像等大数据,则尤其成问题。

如果你的数据不需要随机访问,我建议将其序列化为JSON或XML等文本格式。如果数据很大,则应考虑压缩文本编码的数据。

如果需要随机访问数据,则应调查MySQL或SQLite等数据存储。