2009-03-04 10 views
9

Hay una serie de preguntas en este sitio relacionadas con how to access archivos RESX en una aplicación ASP.NET MVC y best practices de su uso.¿Qué ventajas tiene utilizar la localización .resx para una aplicación ASP.NET MVC?

Sin embargo, después de leer (por primera vez podría agregar) el MSDN article on resources Me pregunto si incluso hay ventajas de usar archivos RESX ya que no voy a usar controles de servidor. Hay toda esta charla de localización 'implícita' y 'explícita', pero no me beneficiaré de eso con MVC.

En última instancia, mi aplicación necesitará recursos de cadena para botones y elementos de menú y también elementos HTML mucho más largos para contenido misceláneo más largo. Me gustaría utilizar un CMS para los artículos más largos porque estoy bastante seguro de que no quiero incluirlos en un archivo RESX.

Existen razones de peso para usar o no los recursos de ASP.NET en una nueva aplicación . Voy a suponer que cualquier mejora futura de MVC o mejoras de RESX funcionarán en armonía, pero por ahora solo estoy obteniendo un identificador glorificado por lo que puedo ver.

¿Debo continuar con RESX o buscar en otro lado? ¿Debería incluso considerar un CMS para los tipos de recursos para los que está diseñado RESX?

Cualquier lección aprendida sería apreciada.

Respuesta

9

hay un par de ventajas a la infraestructura RESX:

  • que no tiene que cargar los recursos apropiados por el lenguaje. Una vez que se establece la configuración regional del subproceso, el CLr se ocupa de encontrar el ensamblaje apropiado y cargar los recursos.
  • es fácil transferir recursos locales específicos para localizaciones a terceros.
  • existe un mecanismo de respaldo predeterminado para recursos no localizados.

También hay una desventaja particular con el enfoque RESX:

  • es difícil apoyar modelo de traducción, donde los usuarios se traducen sus recursos para usted.

Me gustaría elaborar un poco sobre ese último punto. Tomemos por ejemplo el modelo de traducción de Facebook. Facebook tiene una forma bastante simple para que las personas proporcionen y voten sobre las traducciones de diversos recursos. Si se almacenan en una base de datos, sería posible usarlos después del proceso editorial adecuado sin reconstruir y volver a implementar la aplicación. Con el modelo RESX, los ensambles de recursos deberán reconstruirse y redistribuirse, lo que podría tener un costo lo suficientemente alto dependiendo del proceso de implementación.

Por lo tanto, antes de decidir qué proceso de localización usar, consideraría la decisión de quién hará la localización y cuál será el proceso de implementación de los recursos localizados después de que la aplicación principal ya esté implementada.

EDIT: Olvidé mencionar que estas consideraciones son ortogonales a la opción de marco ASP.NET (MVC o WebForms).

+0

¿Y el rendimiento? – jsicary

4

Yo diría que "sí", los archivos de resx siguen siendo una buena opción para las nuevas aplicaciones. No creo que ASP.NET MVC en particular cambie nada sobre el almacenamiento de sus cadenas.

Lo bueno acerca del uso de los recursos es

  • que son bastante fáciles de manejar
  • La localización de su sitio es una tarea mucho más fácil que sin recursos (y subrayo mucho más fácil)
  • se puede reemplazar el almacén de recursos en cualquier momento porque los recursos usan el modelo de proveedor. Puede cambiar los archivos de resx para las entradas de db sin cambiar la implementación de su sitio.

Recomiendo los archivos de recursos para las "cadenas de sitio" que son diferentes de los grandes bloques de datos que puede editar con frecuencia. Entonces, para una recomendación completa, yo diría que use archivos de recursos (resx para comenzar) para botones, etiquetas, etc., y un CMS para el contenido carnoso.

+0

gracias ian. esa es la dirección a la que me estaba inclinando. Simplemente no he tenido que localizar nada antes. de hecho, no necesito localizar nada TODAVÍA, pero quiero estar preparado. Me encontré omitiendo la mayor parte del contenido como no relevante y me dejó curiosidad sobre lo que debería hacer. –

+0

Estamos pasando por la molestia de localizar sitios en este momento. Para nosotros, es un grupo de aplicaciones que funcionan juntas y han existido por algunos años. Esa no es una tarea pequeña :) Definitivamente al menos considere esto antes de comprometerse con la forma en que está haciendo las cosas. Espero que eso ayude y te ahorre trabajo :) –

+0

me pregunto si hay alguna capa de abstracción con los recursos, por ejemplo, así que podría agregar un * al comienzo de cada cadena y luego saber lo que tengo y no tengo localizado Obviamente con un HtmlHelper puedo hacerlo yo mismo con bastante facilidad, pero tal vez hay algunas otras cosas que aprender también –

3

Si va a usar Resx y no usa los Controles del servidor como lo está en MVC, ¿por qué no extiende los métodos de MVC Helper para que pueda crear etiquetas y texto localizados? Luego simplemente llame al texto desde el recurso en el método de ayuda.

p. Ej. '<% = Html.CultureLabel ("ResouceId")%>'

o '<% = Html.CultureButton ("Nombre", "ResouceId", HtmlButtonType.Button)%>'

Justo un pensamiento.

También la gestión de la globalización de un sitio es MUCHO más fácil con resx para el texto.

+0

+1 para extender un método auxiliar - muy agradable. –

Cuestiones relacionadas