次のコードを、平均 3MB のサイズの 30 から 50 個の JPEG (<20 同時ユーザーの場合) を返すことができる効率的な Web API コントローラー メソッドに変更したいと思います。
public async Task<HttpResponseMessage> Get(int imageid) {
return await Task.Run(() => {
var dzImage = _dataContext.DeepZoomImages.SingleOrDefault(_ => _.ImageID == imageid);
if (dzImage == default(DeepZoomImage)) {
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
var response = new HttpResponseMessage(HttpStatusCode.OK);
var bitmap = GetFullSizeBitmap(dzImage);
var memoryStream = new MemoryStream();
bitmap.Save(memoryStream, ImageFormat.Jpeg);
response.Content = new ByteArrayContent(memoryStream.ToArray());
var fileName = string.Format("{0}.jpg", dzImage.ImageName);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
memoryStream.Flush();
return response;
});
}
前述の方法では、1 つのイメージを処理します。この使用法/負荷シナリオで複数の画像を効率的に処理するには、どうすれば複数形にすることができますか? Task<HttpResponseMessage>[] または Task<HttpResponseMessage[]> を返すことは可能ですか?
それとも、すべての画像を生成して一度に返すほうがよいでしょうか?
ご協力いただきありがとうございます...