gpt4 book ai didi

c# - 在 Apache Thrift C# 中将流作为属性发送

转载 作者:行者123 更新时间:2023-11-30 17:05:44 30 4
gpt4 key购买 nike

我想在节俭服务中使用一个流,例如,在一个服务方法中有一个流或类似的东西作为方法的参数(例如,能够将 IDataReader 的结果序列化为流,然后反序列化对另一服务器端数据的引用)。

我认为这显然不可能,但我想知道是否有另一种方法可以实现类似的效果。

谢谢。

最佳答案

Apache thrift 不支持发送流。您可以获得的最接近的是发送一个字节数组。

要使用 thrift 实现类似流的体验,您可以创建一个接口(interface),以字节数组的形式返回流的下一部分。

在 C# 语法中它看起来像

interface MyService
{
int OpenStream(string path);

byte[] ReadNextBlock(int openedStreamId, long maxBlockSize);

}

OpenStream 返回在每次调用时传递给 ReadNextBlock 的“流 ID”。在您的服务器端,您可能持有一个 Dictionary(key - openStreamID, value - Stream),它将用于保持源流打开并从中读取下一个 block 。

您还可以在客户端创建一个辅助类,它将是 Stream 的后代,并将使用 OpenStream 和 ReadNextBlock 来获取实际数据。

关于c# - 在 Apache Thrift C# 中将流作为属性发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16170377/

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