ASP.NET (MVC) Обслуживание изображений

Я создаю приложение MVC 3 (хотя в той же мере применимо к другим технологиям, например, ASP.NET Forms), и мне просто интересно, возможно ли (с точки зрения производительности) обслуживать изображения из кода, а не использовать прямой виртуальный путь (как обычно).

Идея состоит в том, чтобы улучшить общий метод обслуживания файлов, чтобы:

  1. Применять проверки безопасности
  2. Стандартизированный метод обслуживания файлов на основе значений маршрута
  3. Возврат измененных изображений (если требуется), например разные размеры (хорошо, это будет использоваться редко, поэтому не связывайте это с вопросом о производительности выше).
  4. Выполните бизнес-логику, прежде чем разрешить доступ к ресурсу

Я знаю КАК это сделать, но не знаю, должен ли я это сделать.

  1. Какие проблемы с производительностью (если есть)
  2. Произошла ли что-то странное, например, изображения загружаются только последовательно (возможно, в настоящее время я не уверен, как это делает HTML - здесь я демонстрирую свое незнание).
  3. Все, о чем вы можете подумать.

Надеюсь, все это имеет смысл!

Спасибо, Дэн.

ОБНОВЛЕНИЕ

ОК - давайте конкретизируем:

Каковы последствия для производительности при использовании этого типа метода для обслуживания всех изображений в MVC 3 с использованием потока памяти? Примечание: URL-адрес изображения будет GenericFetchImage / image1 (и просто для простоты - все мои изображения в формате jpeg).

public FileStreamResult GenericFetchImage(string RouteValueRefToImage)
{
    // Create a new memory stream object
    MemoryStream ms = new MemoryStream();

    // Go get image from file location
    ms = GetImageAndPutIntoMemoryStream(RouteValueRefToImage);

    // return the output as a file
    return new FileStreamResult(ms, "image/jpeg");
 }

Я знаю, что этот метод работает, потому что я использую его для динамического создания изображения на основе значения сеанса для изображения captcha. Это довольно удобно, но я хотел бы использовать этот метод для поиска любых изображений.

Думаю, в приведенном выше примере мне интересно, нормально ли это делать или требуется дополнительная обработка для выполнения, и если да, то сколько? Например, если количество посетителей умножится на 1000, например, сервер будет перегружен обработкой доставки изображений ..

СПАСИБО!

8
задан Dan B 8 April 2011 в 17:07
поделиться