我最近与一位同事讨论了网络上的字节数据序列化。他用了 BinaryFormatter 上课“ Unparse”我发送给他的字节数据。这没有起作用,他显然有 例外...例外。 Binaryformatter 由于我的数据只是一个字节数组,因此无法正确“取消”数据。

他的动力 BinaryFormatter 是平台独立性。我没有说服这种立场。当我们俩使用 BinaryReader 或者 BinaryWriter, ,事情在代码土地上运作良好。

因此有什么用 BinaryFormatter 我应该在需要通过电线发送字节的情况下在每种情况下使用它吗?

有帮助吗?

解决方案

绝对,如果您的数据为 byte[], BinaryFormatter 不是明智的使用。您只需将数据写入电线即可。但是,如果您有一组对象并想将它们序列化为流, BinaryFormatter 与手动手动编写每种类型的每个字段相比,使用要容易得多。的目的 BinaryFormatter 或任何序列化器/求职者方案通常是提供一种将对象图(可能是复杂)作为字节序列的方法。

其他提示

在我看来,您可能想看一下“协议缓冲区”之类的东西,这(与 BinaryFormatter)是高性能,低频道, 便携式/跨平台, ,耐耐版本的二进制序列化格式(哇,这是一个嘴巴)。

幸运的是,.net中有一些版本,例如 Protobuf-net.

(披露:我是作者,但它是免费的;我不想卖给您任何东西 - 节省您很多时间和痛苦)

BinaryFormatter 非常...脆弱;它是特定于.NET的,并且版本的耐受性相对较差。我唯一使用它的是在幕后进行交流 AppDomainS在同一台机器上。否则,我会看基于合同的连续剧,例如 XmlSerializer, DataContractSerializer, ,或Protobuf-net。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top