Как стать автором
Обновить

Комментарии 18

А зачем обязательно делать handler если можно сделать например sitemap.aspx и весь ваш код засунуть в Page_Load?
Можно и так сделать, но, на мой взгляд, использование IHttpHandler — наиболее простой и правильный способ.
затем, чтобы не обрабатывать полный жизненный цикл страницы (aspx).
я считаю, что для такой редко запрашиваемой страницы как sitemap это не очень-то важно…

Ведь если гнаться за наносекундами производительности, то давайте все страницы сайта тоже реализовывать хендлерами.
Все страницы сайта — это неудобно.
В данном случае ни элементов управления, ни состояния страницы ни остальных наворотов не нужно, поэтому используется обработчик, что впринципе логично.
Более того, дискомфорта нет никакого, если использовать Http Handler в данном случае.
эммм. на вкус и цвет все фломастеры разные. но мне было бы проще сосзадть пустую страницу с отключенным sessionstate (весь остальной хлам типа viewstate и validation я всегда отключаю на уровне всего сайта). На которой не будет никаких контролов, и написать туда этот код.

В этом случае оверхед на то, что это страница а не хендлер будет уже незаметен.
Зато нам не надо править вебконфиг (который будет выглядеть, кстати, по разному для IIS6/тестовый сервер студии и IIS7/7.5).

Опять же, напоминаю для тех кто забыл, сайтмап у нас запрашивается роботами и довольно редко. Если гонитесь за производительностью или запускаете с помощью asp.net шаттл, то настройте правильно кэширование.
Зачем оставлять пустую страницу, можно xml генерировать так же как и html, разделяя код и разметку )
Кому как :)
Для меня лично в конкретно данном случае проще будет написать обработчик. Веб-конфиг, кстати, править совсем не обязательно раз уж на то пошло :)
Здесь поподробнее — почему необязательно?
Как же тогда хэндлер перехватит реквест?
Есть ashx-хэндлеры
Ну как же. Создаем ashx-обработчик и делаем на него прямую ссылку. При этом задействовать конфигурационный файл нет необходимости.
за
1) страницу поддерживать проще
2) можно выставить правила кеширования

против
1) потеряно 2 наносекунды, турбо-гуру в трауре

п.с. можно использовать repeater для цикла, и отрубить половину жизненного цикла страницы
Я вообще считаю, что пофиг какой способ юзать.
Просто хочу исправить кое-то у вас: в хэндлере тоже можно кэшировать
Во-первых, если делаете HttpHandler, то ставьете ему IsReusable = true, тк в вашем случае один и тот же объект может обрабатывать разные запросы и его создание заново не требуется.
Во-вторых, мне кажется разумнее действительно использовать aspx-страничку, тк можно разметку вынести в aspx-файл и поместить в какой-нибудь ListView, а логика будет в кодовой части. (там есть специальный контрол asp:Xml для вывода xml)
вообще вся страница может быть XML файлом, контролы типа Repeater работают с чем угодно, никто не заставляет выводить HTML, можете хоть Javascript генерить в aspx страницах.
Может, но тогда в студии будут отображаться подсказки о несуществующих тегах.
А я люблю, чтобы всё было чётко ) Поэтому при генерации xml всю страницу лучше оборачивать в asp:Xml
загрузи схему, пропиши наймспейс и у тебя будет интеллисенсится свой XML
хм, а я это делал через SiteMapProvider.
Написал на его основе свой SqlSiteMapProvider, примеров в интрнете предостаточно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации