Разница между generic хендлером и пользовательским HTTP хендлером в ASP.NET

ASP.NET

В ASP.NET HTTP хендлер это процесс, который запускается для обработки запроса к Web приложению. Хендлеры не имеют пользовательского интерфейса, а лишь обрабатывают запрос и возвращают результат в нужном формате. Самым типичным примером такого хендлера является хендлер, обрабатывающий .aspx страницы. Вы можете создавать свои собственные хендлеры в форме generic хендлера, или кастомного HTTP хендлера. Чтобы выбрать тот или иной способ, нужно понять в чем между ними отличие.

Generic handler

В соответствии с MSDN, generic хендлер это хендлер по умолчанию, который имеет директиву @webhandler и расширение .ashx. Создаете вы такой хендлер путем создания .ashx файла. Собственно говоря, в ASP.NET есть стандартный хендлер, который обрабатывет .ashx страницы и больше ничего конфигурировать вам не надо.

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

Пользовательский HTTP хендлер

Такой хендлер вы создаете путем создания класса, который реализует интерфейс IHttpHandler (или IHttpAsyncHandler). В отличие от Generic хендлера, такой HTTP хендлер должен быть сконфигурирован в файле web.config соответственно расширениям файлов которые он будет обрабатывать.

Примером использования такого хендлера может быть формирование RSS лент, когда в файле web.config вы указыаете класс который будет обрабатываеть запросы к .rss файлам, и в этом классе прописываете логику динамического формирования RSS ленты.

Подробнее про HTTP хендлеры а также про HTTP модули можете почитать тут: http://msdn.microsoft.com/ru-ru/library/bb398986.aspx

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>