gpt4 book ai didi

java - TSerializer 序列化器 = C# 中的 new TSerializer()

转载 作者:行者123 更新时间:2023-12-01 08:01:30 32 4
gpt4 key购买 nike

Thrift C# API 中是否有任何与 TSerializer 等效的东西。

我正在尝试使用 Thrift 序列化,然后将序列化对象推送到 MQ,而不是使用 Thrift 传输机制。在另一端,我将其反序列化为实际消息。

我可以用 Java 实现,但不能用 C# 实现。

最佳答案

Apache Thrift C# 库目前没有 TSerializer。然而它确实有一个 TMemoryBuffer(本质上是读/写内存的传输),非常适合这种事情。创建一个 TMemoryBuffer,构造一个协议(protocol)(如 TBinaryProtocol),然后序列化您的消息并将它们作为 blob 从 TMemoryBuffer 发送。

例如:

  TMemoryBuffer trans = new TMemoryBuffer();     //Transport
TProtocol proto = new TCompactProtocol(trans); //Protocol
PNWF.Trade trade = new PNWF.Trade(initStuff); //Message type (thrift struct)

trade.Write(proto); //Serialize the message to memory

byte[] bytes = trans.GetBuffer(); //Get the serialized message bytes
//SendAMQPMsg(bytes); //Send them!

要接收消息,您只需执行相反的操作即可。 TMemoryBuffer 有一个构造函数,可用于设置要读取的接收字节。

 public TMemoryBuffer(byte[] buf);

然后您只需在读取端 I/O 堆栈上调用 struct Read() 方法即可。

这并不比使用 Java TSerializer 帮助程序多多少代码(也许更少),而且它在 Apache Thrift 语言库中更通用。您可能会发现 TMemoryBuffer 是通向任何地方的方法!

关于java - TSerializer 序列化器 = C# 中的 new TSerializer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24988527/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com