-
12-09-2019 - |
题
我最近与一位同事讨论了网络上的字节数据序列化。他用了 BinaryFormatter
上课“ Unparse”我发送给他的字节数据。这没有起作用,他显然有 例外...例外。 Binaryformatter
由于我的数据只是一个字节数组,因此无法正确“取消”数据。
他的动力 BinaryFormatter
是平台独立性。我没有说服这种立场。当我们俩使用 BinaryReader
或者 BinaryWriter
, ,事情在代码土地上运作良好。
因此有什么用 BinaryFormatter
我应该在需要通过电线发送字节的情况下在每种情况下使用它吗?
解决方案
绝对,如果您的数据为 byte[]
, BinaryFormatter
不是明智的使用。您只需将数据写入电线即可。但是,如果您有一组对象并想将它们序列化为流, BinaryFormatter
与手动手动编写每种类型的每个字段相比,使用要容易得多。的目的 BinaryFormatter
或任何序列化器/求职者方案通常是提供一种将对象图(可能是复杂)作为字节序列的方法。
其他提示
在我看来,您可能想看一下“协议缓冲区”之类的东西,这(与 BinaryFormatter
)是高性能,低频道, 便携式/跨平台, ,耐耐版本的二进制序列化格式(哇,这是一个嘴巴)。
幸运的是,.net中有一些版本,例如 Protobuf-net.
(披露:我是作者,但它是免费的;我不想卖给您任何东西 - 节省您很多时间和痛苦)
BinaryFormatter
非常...脆弱;它是特定于.NET的,并且版本的耐受性相对较差。我唯一使用它的是在幕后进行交流 AppDomain
S在同一台机器上。否则,我会看基于合同的连续剧,例如 XmlSerializer
, DataContractSerializer
, ,或Protobuf-net。