Reescritura de URL de IIS versus enrutamiento de URL

Estaba planeando utilizar el enrutamiento url para una aplicación de formularios web. Pero, después de leer algunas publicaciones , no estoy seguro de si es un enfoque fácil.

¿Es mejor usar el módulo de reescritura de URL para formularios web? Pero, es solo para IIS7. Inicialmente, hubo cierto rumor de que el enrutamiento de URL está totalmente desacoplado de Asp.Net MVC y podría utilizarse para formularios web.

Me encantaría escuchar cualquier sugerencia ..

Aquí hay una gran publicación sobre las diferencias entre los dos de un miembro del equipo de IIS.

Una advertencia que aconsejaría es que para WebForms, debe tener cuidado al usar Enrutamiento. He escrito una implementación de ejemplo de cómo utilizaría el enrutamiento con WebForms para abordar estas inquietudes y, con suerte, ayudar a responder su pregunta.

Este es el mejor artículo que encontré sobre este tema: Reescritura de URL IIS y enrutamiento ASP.NET por Ruslan Yakushev.

Reescritura de URL IIS

Cuando un cliente realiza una solicitud al servidor web para una URL en particular, el componente de reescritura de URL analiza la URL solicitada y la cambia a otra URL diferente en el mismo servidor. El componente de reescritura de URL se ejecuta muy temprano en la interconexión de procesamiento de solicitudes, por lo que puede modificar la URL solicitada antes de que el servidor web tome una decisión sobre qué gestor usar para procesar la solicitud.

Reescritura de URL IIS

Enrutamiento ASP.NET

El enrutamiento ASP.NET se implementa como un módulo de código administrado que se conecta a la interconexión de procesamiento de solicitudes de IIS en la etapa Resolver Cache (evento PostResolveRequestCache) y en la etapa de Map Handler (PostMapRequestHandler). El enrutamiento de ASP.NET está configurado para ejecutarse para todas las solicitudes realizadas a la aplicación web.

Enrutamiento de URL IIS

Diferencias entre la reescritura de URL y el enrutamiento de ASP.NET:

  1. La reescritura de URL se usa para manipular rutas de URL antes de que el servidor web maneje la solicitud . El módulo de reescritura de URL no sabe nada sobre qué manejador eventualmente procesará la URL reescrita. Además, el controlador de solicitud real podría no saber que la URL se ha reescrito.
  2. El enrutamiento de ASP.NET se utiliza para enviar una solicitud a un controlador en función de la ruta URL solicitada . A diferencia de la reescritura de URL, el componente de enrutamiento conoce los controladores y selecciona el controlador que debe generar una respuesta para la URL solicitada. Puede pensar en el enrutamiento ASP.NET como un mecanismo avanzado de asignación de controladores.

Además de estas diferencias conceptuales, existen algunas diferencias funcionales entre la reescritura de URL de IIS y el enrutamiento de ASP.NET:

  1. El módulo de reescritura de URL de IIS se puede usar con cualquier tipo de aplicación web, que incluye ASP.NET, PHP, ASP y archivos estáticos. El enrutamiento de ASP.NET se puede usar solo con aplicaciones web basadas en .NET Framework.
  2. El módulo de reescritura de URL de IIS funciona de la misma manera independientemente de si se utiliza el modo de canalización de IIS integrado o clásico para el grupo de aplicaciones. Para el enrutamiento ASP.NET, es preferible utilizar el modo de canalización integrada. El enrutamiento ASP.NET puede funcionar en modo clásico, pero en ese caso las URL de la aplicación deben incluir extensiones de archivo o la aplicación debe estar configurada para usar la asignación de manejador “*” en IIS.
  3. El módulo de reescritura de URL puede tomar decisiones de reescritura basadas en nombres de dominio, encabezados HTTP y variables de servidor. De forma predeterminada, el enrutamiento de ASP.NET solo funciona con rutas URL y con el encabezado HTTP-Method.
  4. Además de reescribir, el módulo de reescritura de URL puede realizar una redirección HTTP, emitir códigos de estado personalizados y abortar solicitudes. El enrutamiento de ASP.NET no realiza esas tareas.
  5. El módulo de reescritura de URL no es extensible en su versión actual. El enrutamiento de ASP.NET es totalmente extensible y personalizable.

¿Desea que las URL formateadas sean una fábrica para las páginas de desove?

o quieres hacer desaparecer el .aspx?

reescribir, es para hacer desaparecer el .aspx, o simplemente para poner en orden la url.

Enrutamiento, es para ver una solicitud y determinar qué objeto debe manejarlo. Suenan similares, phil hack tiene algunos buenos artículos sobre el tema.

en iis6, isapiRewrite, es muy bueno

Recientemente escribí mi propio sistema de reescritura para que las URL de mis sitios se vean mejor. Básicamente, tendrá que escribir su propio IHttpModule y agregarlo a su web.config para interceptar las solicitudes entrantes. Luego puede usar HttpContext.Current.RewritePath para cambiar lo que está señalando.

También querrá configurar su sitio para usar aspnet_isapi para todo .

Descubrirá muchos pequeños problemas en el camino, como tratar de trabajar con páginas que usan “colas” (como en el caso de los métodos de página), o el recorrido de los elementos de la página y las devoluciones de formularios, pero los superará.

Si está interesado, puedo publicar un enlace al código y puede verificarlo. Ya he solucionado muchos problemas para que puedas leerlos mientras avanzas. Estoy seguro de que hay muchas otras personas que también han hecho esto y que también podrían ser buenos recursos.

Es posible que desee verificar mi respuesta a esta pregunta: ASP.NET – Construyendo su propio sistema de enrutamiento . Incluí algunas buenas referencias para ayudar a construir su propio sistema de enrutamiento ya sea usando el método de reescritura de URL o el nuevo motor de enrutamiento que puede usar que salió del proyecto ASP.NET MVC.

El proyecto Dynamic Data que está disponible con .Net 3.5 SP1 muestra un buen ejemplo de una implementación de enrutamiento url.

Para la reescritura de URL en IIS, IIRF funciona en IIS5, 6, 7. Gratis. Fácil. Rápido. Fuente abierta. Soporte de expresión regular.