我目前正在开发套接字服务器,我想知道
为什么序列化器喜欢
-
Xml序列化器 https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(v=vs.110).aspx
-
二进制格式化程序 https://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx
- Protobuf-net https://github.com/mgravell/protobuf-net
- 数据契约序列化器 https://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer(v=vs.110).aspx
都需要一个Stream https://msdn.microsoft.com/en-us/library/system.io.stream(v=vs.110).aspx而不是字节数组?
这意味着您可以流式传输到任意目的地,而不是just记忆。
如果要向文件写入内容,为什么要先在内存中创建完整的副本?在某些情况下,这可能会导致您使用lot额外的内存,可能会导致失败。
如果你想创建一个字节数组,只需使用MemoryStream
:
var memoryStream = new MemoryStream();
serializer.Write(foo, memoryStream); // Or whatever you're using
var bytes = memoryStream.ToArray();
因此,通过“您使用流”的抽象,您可以轻松地使用内存 - 但如果抽象是“您使用字节数组”,那么您就是forced即使你不愿意,也要用记忆来工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)