2015-05-18 14 views
1

Моя задача заключается в разработке образа сервера, который будет:IHttpHandler или IHttpAsyncHandler для сервера Image

  • загрузки изображения с диска
  • изменить его размер, в соответствии с параметром HTTP
  • применять один или несколько водяных знаков исходное изображение

вопрос заключается в том, что технология я должен использовать, я буду делать это с IHttpHandler, но мне интересно, если с помощью IHttpAsyncHandler будет быстрее для этого СБН enario?

Могу ли я использовать обработку изображений асинхронно в IHttpHandler?

Также, возможно, мне следует рассмотреть некоторые рамки высокого уровня, например. NancyFx или просто вернуть изображения из контроллера (MVC2)?

+1

Я бы подумал об использовании http://imageresizing.net/ - Реконструкция этого, вероятно, будет стоить вам или вашему работодателю много раз за счет его лицензирования. Выполнение изменения размера изображения на лету очень сложно. –

+0

Планируете ли вы обработать их во время выполнения? В зависимости от размера это может занять некоторое время. – Brduca

+0

@Brduca, да, план заключается в изменении размера на лету. Я знаю, что я могу изменить их размер один раз и использовать существующий, но я обязательно буду анализировать их во время выполнения. –

ответ

0

Асинхронный IO не делает IO быстрее в любом случае. Он разблокирует поток, пока выполняется IO. Вся работа процессора, на которой выполняется работа, вообще не влияет.

In some cases it is a good idea to use async IO to unblock threads, in others it is a waste of dev time with no benefit to customers whatsoever. Ожидаете ли вы большого количества одновременных загрузок изображений (например, 100 (в то же время!))? Тогда асинхронный IO может принести пользу.

Возможно, вы используете IHttpHandler. Используйте MVC.

+0

Downvoted, потому что * IF * вы должны реализовать это самостоятельно, MVC, безусловно, НЕ является тем, как это сделать , IHttpHandler будет гораздо лучшим подходом. HttpModule было бы лучше. –

+0

@RobertMcKee вы можете уточнить? Я не знаю никаких сильных сторон, которые поддержали бы ваши аргументы. Особенно тот факт, что вы, кажется, думаете, что HttpModule (далекий) превосходный, кажется необоснованным. – usr

+0

Несомненно.MVC - отличная инфраструктура для доставки веб-страниц, так как требуется большая часть работы от воровства от необходимости иметь дело с такими вещами, как потоки и состояние сеанса, поэтому необходимо заставить несколько запросов использовать все сеансы через один поток (или выполнять их по одному), поиск и десериализация параметров из нескольких мест (URL, сообщение формы, файлы cookie и т. д.). Однако каждый из них стоит дорого. Изображения получают много раз больше запросов, которые делает веб-страница, и что накладные расходы складываются быстро. –

-1

Я бы предпочел использовать http://imageresizing.net - Реконструкция этого, вероятно, будет стоить вам или вашему работодателю много раз за счет его лицензирования. Выполнение изменения размера изображения на лету очень сложно. Основываясь на том, что вы описываете для своих нужд, я считаю, что лицензия будет бесплатной. Только если/когда вы выходите за пределы своих простых потребностей, вам нужно будет перейти на лицензию на оплату.

Если вы решите попробовать свои собственные, я предлагаю сначала прочитать это: http://www.nathanaeljones.com/blog/2009/20-image-resizing-pitfalls, который поможет выявить некоторые подводные камни, которые нужно попытаться избежать.