2012-01-03 21 views
5

Me gustó mucho la idea de utilizar atributos para controlar ASP.NET MVC enrutamiento, así que en vez de registrar una nueva ruta y contaminan el Global.asax.cs o * AreaRegistration.cs, yo tener algo como esto:¿Qué marco de enrutamiento MVP de ASP.NET elegir?

[Route("users/{userrId}/pages/{pageId}"] 
public ActionResult Some(int userId, int pageId) { } 

Veo la gran respuesta: ASP.NET MVC Routing Via Method Attributes, pero me gustaría obtener algunas recomendaciones de "uso real".

  1. ¿Qué marco de enrutamiento recomendaría?
  2. ¿Qué tan fácil para iniciar y cambiar el código existente para el uso?
  3. ¿Está disponible en NuGet?

.. y realmente vale la pena usar eso, ¿se puede tratar como la mejor (¿quizás buena?) Práctica?

Respuesta

4

Intenté el enrutamiento a través de los atributos del método hace tiempo. No usaría ningún marco para el enrutamiento.

Creo que lo mejor es seguir el esquema "estándar".

Además, la unidad de prueba de cada ruta individualmente me ayudó bastante
(incluso escribí una prueba que falla en caso de que haya perdido alguna ruta).

+0

¿Puede compartir tal prueba? – sashaeve

+1

@sashaeve no puede decir que es hermoso, pero aquí tienes: https://gist.github.com/1555885 –

0

Mi preferencia personal es mantener la configuración de enrutamiento centralizada (la mantengo en Global.asax).

Sin embargo, sea cual sea el método que utilice, asegúrese de estar siguiendo un estándar. Supongo que el problema que veo con el enrutamiento de atributos es que permite que los desarrolladores se vuelvan "creativos" de una manera que se vuelve confusa y difícil de mantener y comprender.

Al tener todas las rutas en un lugar centralizado, le permite encontrar y comprender rápidamente las reglas de enrutamiento que se aplican.

2
  1. Recomendaría AttributeRouting, lo escribí y lo uso todos los días.
  2. Para iniciar, simplemente decore una acción con un atributo GET. Nuget hace el resto.
  3. Nuget sí.

Me gustan las URL.

Me gusta verlas justo encima del código al que se asignan.

[GET("some/url")] 
public ActionResult HotDamn() 

Al hacer esto, puede Ctrl + F "algún/url" y vaya a la derecha de su método de acción, que es bastante práctico. Si cambia el nombre de su acción o lo mueve a otro lugar, la ruta permanece y no cambia.

[GET("some/url"] 
public ActionResult HotDarnCauseCussingIsBad() 

Si desea cambiar las direcciones URL y todavía responder a la URL legado, sólo tiene que añadir otro atributo por encima de la anterior y marcarla como el nuevo estableciendo pedido = 1:

[GET("better/url", Order = 1)] 
[GET("some/url")] // order defaults to int.MaxValue 
public ActionResult BetterMethodName() 

Si desea obtener reparador, e ir todo el camino con las anulaciones método HTTP y el apoyo GET/POST/PUT/DELETE, que acaba de ir a la derecha en con su propio mal:

[GET("")] 
public ActionResult Index() 

[POST("")] 
public ActionResult Create() 

[PUT("{id}")] 
public ActionResult Update() 

[DELETE("{id}")] 
public ActionResult Delete() 

yo uso este lib todo el tiempo, y lo hice para que yo coul re. Lo he usado durante un año y medio y nunca he tenido problemas con el enrutamiento o la búsqueda de las cosas o preguntándome por qué la ruta A obtuvo coincidencias en lugar de la ruta B. Es súper fácil de usar, tiene bastantes opciones de configuración y hace el enrutamiento 100 veces más simple (en mi opinión).

Independientemente de lo que elija, definitivamente recomiendo al menos probar el enrutamiento basado en atributos, ya sea AR u otra cosa. Puede que no sea la taza de té de todos, pero me encanta.

Cuestiones relacionadas