ファイル ID のリストを渡され、それらのファイルのサムネイル画像を返す ASP.NET MVC 4 Web Api コントローラー メソッドがあります。
そのため、クライアントは数値 ID (例: 10、303、29) のリストを渡すことができ、メソッドは ThumbnailImage が次のように見える List を返します。
class ThumbnailImage
{
public int Id { get; set; }
// Some other stuff
public byte[] RawData { get; set; }
}
発信者が項目ごとに 1 回の呼び出しを行うのではなく、ID のリストを渡す理由は明らかです。ダウンロードする項目が数十または数百ある可能性があり、ダウンロードに必要なすべての HTTP トラフィックを回避しようとしています。個別にダウンロードしてください。
現在、RestSharp と JSON.NET を使用しているため、ThumbnailImage オブジェクトは JSON としてネットワーク経由で渡されます。コーディングの単純さの観点からは問題ありませんが、JSON はそのバイナリ データを表現する効率的な方法ではありません。
したがって、生のバイトをオクテット ストリームとして返す必要があると考えています...ただし、単一の画像に対しては簡単に行うことができますが、複数の画像に対して行う最善の方法はわかりません。特に、各ファイルの ID やその他の情報を返す必要がある場合は特にそうです。(結果は必ずしも特定の順序で返されるとは限らず、一部のファイルが欠落している可能性があるため、ID が必要です)。
単純にすべてを断片的に応答ストリームに書き込むことができます。そのため、各項目に対して ID (適切にエンコードされたもの)、続いて画像データの長さ、画像データ自体、そしてその後に同じものが続きます。次の項目など
呼び出し元は、ID のエンコーディング (および長さ!) などを想定して、ストリームが使い果たされるまでストリームから読み取り続けるだけでした。
私はそれがうまくいくと思いますが、それは不格好に思えます - より良い方法はありますか?