Насколько я понимаю ваш вопрос, изображение извлекается через веб-службу, что означает, что изображение извлекается, помещается в бинэксид в сообщении SOAP, отправляется по проводам, в незафиксированном виде на стороне клиента (где находится ваш запрос LINQ) , Это всегда будет очень медленно. Фактические отправленные данные в 1,5-2,0 раза больше, чем фактическое BLOB-изображение.
Получение огромных больших двоичных объектов из базы данных таким образом всегда является кошмаром производительности. Если вам нужно запросить их (вы используете LINQ), рассмотрите возможность запроса только метаданных. Получив нужный идентификатор изображения, вы извлекаете все изображение целиком.
Тем не менее, он не станет идеальным быстро. Чтобы обеспечить лучшую производительность, каждое полученное изображение должно быть кэшировано на вашем сервере (после получения веб-службой) и не должно быть получено более одного раза. Этот тип кэширования должен быть тривиально реализован. В качестве альтернативы, вы не должны хранить изображения в виде больших двоичных объектов, но сейчас, вероятно, уже слишком поздно на этапе проектирования.
Примечание к using
: просто используйте его для любой переменной, которая реализует IDisposable
. Однако не сказано, что это приводит к снижению производительности.