IIS URL Rewriting vs URL Routing

Я планировал использовать маршрутизацию URL-адресов для приложения веб-форм. Но после прочтения некоторых сообщений , Я не уверен, что это простой подход.

Лучше ли использовать модуль перезаписи URL для веб-формы? Но это только для IIS7. Изначально ходили слухи, что маршрутизация URL-адресов полностью отделена от Asp.Net MVC и может использоваться для веб-форм.

Хотелось бы услышать любые предложения ..


person Gulzar Nazim    schedule 18.09.2008    source источник


Ответы (7)


Здесь есть отличный пост о различиях между два от члена группы IIS.

Одно предостережение, которое я бы посоветовал, заключается в том, что для WebForms вам нужно быть осторожным при использовании маршрутизации. Я написал образец реализации того, как вы бы использовали маршрутизация с помощью WebForms, которая решает эти проблемы и, надеюсь, поможет ответить на ваш вопрос.

person Haacked    schedule 18.09.2008

Это лучшая статья, которую я нашел по этой теме: Перезапись URL-адресов IIS и маршрутизация ASP.NET Руслана Якушева.

Перезапись URL-адресов IIS

Когда клиент делает запрос к веб-серверу для определенного URL-адреса, компонент перезаписи URL-адресов анализирует запрошенный URL-адрес и изменяет его на другой URL-адрес на том же сервере. Компонент перезаписи URL-адресов выполняется очень рано в конвейере обработки запросов, поэтому может изменять запрошенный URL-адрес до того, как веб-сервер примет решение о том, какой обработчик использовать для обработки запроса.

Перезапись URL-адреса IIS

Маршрутизация ASP.NET

Маршрутизация ASP.NET реализована в виде модуля управляемого кода, который подключается к конвейеру обработки запросов IIS на этапе разрешения кэша (событие PostResolveRequestCache) и на этапе обработчика карты (PostMapRequestHandler). Маршрутизация ASP.NET настроена для выполнения всех запросов к веб-приложению.

Маршрутизация URL-адресов IIS

Различия между перезаписью URL и маршрутизацией ASP.NET:

  1. Перезапись URL используется для управления путями URL до обработки запроса веб-сервером. Модуль перезаписи URL ничего не знает о том, какой обработчик в конечном итоге обработает перезаписанный URL. Кроме того, фактический обработчик запроса может не знать, что URL-адрес был переписан.
  2. Маршрутизация ASP.NET используется для отправки запроса обработчику на основе запрошенного пути URL. В отличие от перезаписи URL, компонент маршрутизации знает об обработчиках и выбирает обработчик, который должен генерировать ответ для запрошенного URL. Вы можете думать о маршрутизации ASP.NET как о расширенном механизме сопоставления обработчиков.

Помимо этих концептуальных различий, существуют некоторые функциональные различия между перезаписью URL-адресов IIS и маршрутизацией ASP.NET:

  1. Модуль перезаписи URL-адресов IIS можно использовать с любым типом веб-приложения, включая ASP.NET, PHP, ASP и статические файлы. Маршрутизация ASP.NET может использоваться только с веб-приложениями на основе .NET Framework.
  2. Модуль перезаписи URL-адресов IIS работает одинаково независимо от того, используется ли для пула приложений интегрированный или классический режим конвейера IIS. Для маршрутизации ASP.NET предпочтительно использовать режим интегрированного конвейера. Маршрутизация ASP.NET может работать в классическом режиме, но в этом случае URL-адреса приложений должны включать расширения файлов или приложение должно быть настроено для использования сопоставления обработчиков «*» в IIS.
  3. Модуль перезаписи URL может принимать решения о перезаписи на основе доменных имен, заголовков HTTP и переменных сервера. По умолчанию маршрутизация ASP.NET работает только с URL-путями и с заголовком HTTP-Method.
  4. В дополнение к перезаписи модуль перезаписи URL может выполнять перенаправление HTTP, выдавать настраиваемые коды состояния и отменять запросы. Маршрутизация ASP.NET не выполняет эти задачи.
  5. Модуль перезаписи URL-адресов в текущей версии не расширяется. Маршрутизация ASP.NET полностью расширяема и настраиваема.
person splattne    schedule 08.11.2008

Вы хотите, чтобы отформатированные URL-адреса были фабрикой для создания страниц?

или вы хотите убрать .aspx?

rewriting, предназначен для удаления .aspx или просто для того, чтобы привести в порядок URL-адрес.

Маршрутизация предназначена для просмотра запроса и определения того, какой объект должен его обработать. Они звучат одинаково, у Фил Хака есть несколько хороших статей на эту тему.

в iis6, isapiRewrite, очень хорошо

person DevelopingChris    schedule 18.09.2008
comment
Оригинальные идеи: отсутствие расширений файлов, удобство для поисковых систем, адреса, которые можно взломать. Мне тоже нравится идея создания новых страниц. :) - person Gulzar Nazim; 18.09.2008
comment
Мне нравится isapirewrite, но мы стараемся избегать сторонних разработчиков, насколько это возможно .. не мое решение .. - person Gulzar Nazim; 18.09.2008
comment
Я полностью согласен с меньшим количеством сторонних производителей, уловка в том, что мы можем, и iis 7 обычно сложнее продать, чем dll для iis 6 box, по крайней мере, с моими клиентами - person DevelopingChris; 18.09.2008

Недавно я написал свою собственную систему перезаписи, чтобы URL-адреса на моих сайтах выглядели лучше. По сути, вам нужно будет написать свой собственный IHttpModule и добавьте его в свой web.config для перехвата входящих запросов. Затем вы можете использовать HttpContext.Current.RewritePath, чтобы изменить то, на что вы указываете.

Вы также захотите настроить свой сайт на использовать aspnet_isapi для всего.

По пути вы обнаружите множество мелких проблем, таких как попытки работать со страницами, которые используют «хвосты» на них (например, для PageMethods), или перемещение элементов страницы и обратные передачи форм, но вы справитесь с ними.

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

person hugoware    schedule 18.09.2008

Вы можете ознакомиться с моим ответом на этот вопрос: ASP.NET - Создание собственной системы маршрутизации. Я включаю несколько хороших ссылок, которые помогут создать вашу собственную систему маршрутизации с использованием метода перезаписи URL-адресов или нового механизма маршрутизации, который вы можете использовать, который появился из проекта ASP.NET MVC.

person Dale Ragan    schedule 18.09.2008

Проект Dynamic Data, доступный с .Net 3.5 SP1, показывает хороший пример реализации маршрутизации URL-адресов.

person Norge    schedule 18.09.2008
comment
Есть ли URL-адрес, который дает хороший обзор или пример этого? - person pearcewg; 03.12.2008

Для перезаписи URL в IIS IIRF работает в IIS5, 6, 7. Бесплатно. Легкий. Быстрый. Открытый источник. Поддержка регулярных выражений.

person Cheeso    schedule 09.03.2009