我正在寻找如何使用protobuf-net序列化和套接字连接在两台机器之间传输集合的完整示例。我成功找到的只是代码的各个部分,没有人能像我一样向noob解释如何组合所有这些东西。在.proto文件之后:
using System;
using ProtoBuf;
namespace Proto.Transaction
{
[Serializable]
[ProtoContract]
public class Transaction
{
[ProtoMember(1)]
public int Type { get; set; }
[ProtoMember(2)]
public int AgentID { get; set; }
[ProtoMember(3)]
public string TransactionName { get; set; }
[ProtoMember(4)]
public string ScriptName { get; set; }
[ProtoMember(5)]
public DateTime StartTime { get; set; }
[ProtoMember(6)]
public double TransactionLength { get; set; }
}
}
最后,我必须将它作为Observable Collection接收并将其设置为DataSet(为了将其保存为XML并将其呈现在DataGrid中)。我将非常感谢任何帮助和/或链接到网络中的适当材料。 此致
答案 0 :(得分:2)
在最基本级别,您可以查看QuickStart/3 Sockets.cs下的示例。这里的关键点是如果你在原始套接字级别工作,你需要在消息之间添加某种分区(因为TCP只是一个流)。该示例使用*WithLengthPrefix
方法执行此操作。
但是,在许多情况下,您可以使用已经包含消息分区的预卷RPC /消息传递实现;在这种情况下,您不需要使用*WithLengthPrefix
方法(尽管欢迎您这样做)。