3

リサイクル サービスでストリームを使用したいと考えています。たとえば、メソッドの引数としてストリームまたは類似のものを使用するサービス メソッドで使用したいと考えています (たとえば、IDataReader からストリームへの結果をシリアル化できるようにするため)。次に、他のサーバー側のデータへの参照を逆シリアル化します)。

これが明示的に可能だとは思いませんが、同様のことを達成する別の方法があるかどうか疑問に思っていました.

ありがとう。

4

1 に答える 1

3

Apache thrift は、ストリームの送信をサポートしていません。あなたが得ることができる最も近いものは、バイト配列を送信することです。

thrift を使用してストリームのようなエクスペリエンスを実現するために、ストリームの次の部分をバイト配列の形式で返すインターフェイスを作成できます。

C# 構文では、次のようになります。

interface MyService
{     
   int OpenStream(string path);

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

}

OpenStream は、呼び出しごとに ReadNextBlock に渡される「ストリーム ID」を返します。サーバー側では、ソースストリームを開いたままにし、そこから次のブロックを読み取るために使用される Dictionary(key - openStreamID, value - Stream) を保持できます。

Stream の子孫となり、OpenStream と ReadNextBlock を使用して実際のデータを取得するヘルパー クラスをクライアント側で作成することもできます。

于 2013-04-23T13:24:52.383 に答える