发送流作为在Apache的节俭C#中的属性

问题描述:

我想消耗在旧货服务的流,例如,在服务的方法有一个流或作为参数类似的方法(例如,为了能够将IDataReader的结果序列化为流,然后反序列化对其他服务器端数据的引用)。发送流作为在Apache的节俭C#中的属性

我不认为这是明确的可能,但我不知道是否有另一种方式来实现类似的东西。

谢谢。

+0

的[如何流从Python来C++使用Apache节俭的图像](http://*.com/questions/26739520/how-to-stream-an-image-from-python-to-c可能重复-using-apache-thrift) – JensG 2015-01-04 17:54:13

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

为了实现流般的体验使用节俭,你可以创建一个返回流的字节数组的形式下一部分的接口。

在C#语法它看起来像传递到ReadNextBlock在每次调用

interface MyService 
{  
    int OpenStream(string path); 

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

} 

的OpenStream返回 “流ID”。在您的服务器端,您可以持有一个Dictionary(key - openStreamID,value - Stream),用于保持源流打开并从中读取下一个块。

您也可以创建客户端一个辅助类,这将是流后裔,并且使用的OpenStream和ReadNextBlock获取的实际数据。

+0

谢谢你 - 我唯一的保留是我希望服务器在需要时请求更多数据(类似于dataReader.Next()或Stream.GetBytes()) - 是否有任何如何做到这一点? – Ian 2013-04-23 14:28:43

+0

服务器已经有一个流,它可以做他想做的事情。客户端可以重复调用ReadNextBlock,直到返回空数组。 – alex 2013-04-23 14:55:24