我有很多像这样的数据
1:0x00a4c7d9fb3849 ...
2:0x79821309bd789c7689c97 ...
3:0x0178dce67fe898 ...
它们每秒超过100次,速度是最重要的(网络总是很忙)。
我应该用什么来传输我的数据(tcp / ip,pipe,via等)?
我应该如何序列化它(BinaryFormatter,Xml,用户定义或任何更好的建议)?
答案 0 :(得分:1)
如果您要发送大量数据,并且数据不重要,那么UDP是最佳选择。但是,这可能会丢失数据包(您可能会丢失整个网络中的一个数据集)。如果您的数据正在执行更新实时图表之类的操作,这通常很好,因为缺失值并不重要。
但是,如果缺少数据至关重要,那么TCP / IP将是您通过网络发送数据的最佳选择。鉴于数据速率很高,您最好使用自己的用户定义二进制格式,只发送/接收原始字节。使用Xml会更加繁琐(这意味着更多的开销)。即使是BinaryFormatter也会增加一些开销,因为序列化往往会增加一些绝对必要的内容。
答案 1 :(得分:1)
如果每个都是100个字节(100个数字应该适合,没问题),100x100是每秒10000字节,或10Kbps。
我会使用我最熟悉的任何东西,如果第一个解决方案不起作用,请担心速度问题。您构建第一个解决方案的想法将会/将使第二个解决方案更容易构建,并且您可以更快或更快地获得最终产品,除非减少挫折感。
答案 2 :(得分:0)
每秒100个这些字符串看起来不是太大的问题(或字符串必须很长)。
二进制文件总是比它的字符串代表更加浓缩。您甚至可以先打包它(使用zip或其他任何东西)
如果您想完全控制发送,TCP / IP将是一个不错的选择。
答案 3 :(得分:0)
这看起来像二进制数据(例如,可以打包到byte []而不是使用字符串的数据)。为了获得最佳效率,您可以在TCP / IP(使用TCP,甚至UDP)之上设计自己的协议,如果网络负载是一个大问题,甚至可能即时压缩数据。确保您不发送许多小块,而是通过网络发送更大的块(例如,1400字节可能是一个很好的大小)。