C#Protobuf .NET使用预先存在的字节数组

时间:2015-06-14 01:18:46

标签: c# networking serialization protobuf-net objectpool

所以我正在使用.NET中的Protobufs,我正在尝试将它们与缓冲池和AsyncSocketEventArgs池合并。缓冲池将一个巨大的字节数组的部分分配给事件args。

所以,问题是,我无法想出让Protobufs直接序列化到我的缓冲区之一的方法。相反,所有方法似乎都会序列化到自己的缓冲区,这会浪费时间/内存......任何方式来做我正在寻找的东西?

编辑:我已经创建了一个proto方案,并且我生成的消息包含的delta不是完全序列化的类,所以我相信使用attributes / Serializer类对我没有帮助。我想将字节直接写入我的一个缓冲区。我相信MemoryStream,从我读过的内容仍然只是指向一个创建的字节数组,这仍然会浪费大量的时间/内存。

1 个答案:

答案 0 :(得分:1)

使用内存流

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


namespace ConsoleApplication1
{
    class Program
    {

        static void Main(string[] args)
        {
            Person person = new Person();
            XmlSerializer serializer = new XmlSerializer(typeof(Person));
            MemoryStream stream = new MemoryStream();

            serializer.Serialize(stream, person); 
        }


    }
    public class Person
    {
    }

}
​