c# - 我是否仍应在 .NET 4.0 中使用 BinaryFormatter 进行简单序列化?

标签 c# .net performance serialization binary-serialization

我正在开发一个主从式应用程序。主应用程序将状态数据发送到从属应用程序以某种恒定速率进行处理和显示。状态数据被包装到一个包含许多字段的类中。这些字段类型由原语、类、接口(interface)、接口(interface)列表等组成。所有类型都是 BCL 或自定义类型,因此可以根据需要修改自定义类型。主应用程序和从属应用程序都将是 .NET 4.0。我不关心序列化版本控制,因为主应用程序和从属应用程序将成对交付。

我需要一种“快速”的方法来序列化主服务器上的状态数据并在从服务器上反序列化它。当我说“快”时,我更多的是在谈论开发时间(但如果解决方案很糟糕,处理时间可能是一个因素)。然而,master 和 slave 将分布在 WAN 上,因此一定程度的紧凑性也会很好。

为了快速解决问题,我目前正在考虑简单地使用 BinaryFormatter,然后使用 GZipStream 压缩流。这是 .NET 4.0 的发展方向吗?

最佳答案

如果开发速度是关键(特别是因为您有接口(interface)等,您需要为某些序列化程序适当配置)那么也许。请记住将任何事件标记为:

[field:NonSerialized]

关于所有其他衡量标准(CPU 性能、带宽、版本的稳健性、互操作性、维护成本等)我会选择其他格式:)

这里有一个选择:

Performance Tests of Serializations used by WCF Bindings

也许并不奇怪(因为我写了它),但我倾向于 protobuf-net...

关于c# - 我是否仍应在 .NET 4.0 中使用 BinaryFormatter 进行简单序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284641/

相关文章:

c# - 自动异步套接字测试

.net - 你如何在 Mono 中使用 ALSA?

c# - 尝试通过 C# 中的多线程从两个不同的数据库表中获取值

c# - 如何使用C#检测流或tcplistener或声卡的音频电平

c# - EFCore : Entities association error during a simple property update

c# - .NET 部分类对多个文件的可访问性

python - python中的ffmpeg - 提取元数据

performance - 优化插入列表中间

android - 缓慢上传到正在运行的 Android 模拟器

c# - Dictionary的编码方式和用法