Jan*_*kke 29 c# serialization stream
我目前正在研究套接字服务器,我想知道为什么序列化器会像
所有都需要Stream而不是字节数组?
Jon*_*eet 51
这意味着您可以流式传输到任意目的地而不仅仅是内存.
如果要将某些内容写入文件,为什么要先在内存中创建完整的副本?在某些情况下,可能会导致您使用大量额外内存,可能导致失败.
如果要创建字节数组,只需使用MemoryStream:
var memoryStream = new MemoryStream();
serializer.Write(foo, memoryStream); // Or whatever you're using
var bytes = memoryStream.ToArray();
Run Code Online (Sandbox Code Playgroud)
因此,通过"使用流"的抽象,您可以轻松地使用内存 - 但如果抽象是"您使用字节数组" ,即使您不想这样做,您也不得不使用内存.
Cla*_*lay 11
您可以轻松地在字节数组上创建流...但是字节数组本身就是大小限制的,其中流是开放式的...根据需要大.一些序列化可能非常巨大.
编辑:另外,如果我需要实现某种序列化,我想做最基本的抽象,并避免必须通过多个抽象.流是我的选择,因为有很多东西的流实现:内存,磁盘,网络等等.作为一个实施者,我得到了"免费"的.
如果你使用的是byte array/ buffer你暂时在记忆中工作而且你的身材有限
虽然流是允许您将内容存储在磁盘上的东西,但是可以发送到其他计算机,例如互联网,串行端口等.流通常使用缓冲区来优化传输速度.
因此,如果您正在处理大型文件,则流式传输将非常有用
| 归档时间: |
|
| 查看次数: |
2875 次 |
| 最近记录: |