2008-11-08 9 views
22

Últimamente, he estado reflexionando sobre la arquitectura poco convencional de crear XML sin procesar en el lado del servidor, y luego uso una hoja de estilos XSLT en el cliente para transformar el XML en la IU completa. Por supuesto, un mecanismo de reserva debería existir si el cliente no fuera capaz de XSLT del lado del cliente, en cuyo caso simplemente lo transformaríamos para ellos en el lado del servidor.Cualquier sitio grande que use Client Side XSLT?

Ya estoy íntimamente familiarizado con XSLT, y este enfoque parece ser una separación clara de presentación y contenido, forzando por completo los datos en XML y usando XSLT para la presentación.

También sé que esto agrega una capa adicional de complejidad a la aplicación, que es simplemente otra parte móvil que puede fallar.

Mi pregunta es: ¿hay algún nombre importante o sitios de gran tráfico que utilicen este enfoque? De ser así, ¿qué limitaciones/lecciones aprendidas le sacó?

Gracias a Internet, Zach

+0

Dos años después, ¿sigues usando esta técnica? – Casey

+0

No, no lo soy. Con la aparición de un montón de nuevos dispositivos (móviles), esto no es lo suficientemente convencional como para garantizar que funcionará. No parece que WoW todavía esté usando esto tampoco. – zachleat

+1

Es posible que lo hayan movido del lado del cliente al lado del servidor. –

Respuesta

13

Como otras personas han mencionado, Blizzard tiene muchos sitios que son del lado del cliente xsl. Yo recomendaría evitar el lado del cliente xsl. Es una idea genial, pero hay muchos errores inusuales que necesita solucionar.

En Firefox, cualquier javascript que use document.write destruirá el DOM. Además, el complemento noscript para firefox detiene el lado del cliente xsl. En ambos casos, el usuario no verá nada. No parece haber una manera de detectar este tipo de error, por lo que una caída no funcionará.

En IE, si tiene algo que hace una redirección 30x a algo de un origen diferente (pasando de http a https o cruzando subdominios), obtendrá un error por violar el same origin policy. Realmente no violó la misma política de origen, pero IE actúa como lo hizo. Por ejemplo, si va al http://foo.example.com/login y hace un redireccionamiento 302 al https://bar.example.com/login.xml, IE tratará el xsl como si viniera de bar.example.com y tratará el xml como si viniera de foo.example.com. Por lo tanto, tendrá que volver a algo así como una meta actualización para sus redireccionamientos.

Estas son las cosas que se me ocurrieron en la cabeza. Es una idea clara, pero tenga en cuenta estos problemas.

+0

interesante, no tenía idea de eso. Sin embargo, estos son casos raros. Siento que XSLT del lado del cliente es el futuro. Entregar la plantilla al navegador y hacer que lo llenen con datos es cómo debería funcionar Internet. Me encanta que Blizzard lo usa en la mayoría de sus sitios :). Pero, como todo lo que sucede con el cliente ... existen problemas de compatibilidad con el navegador (css, js ...) –

+0

+1 para la sugerencia de IE. – harpo

+0

¿Sabes por casualidad si estos errores persisten en IE9 y FF4? – Casey

6

no se notaba en detalle cómo se implementa, pero World of Warcraft es bastante grande y alto tráfico, y su sitio web se implementa como usted describe.

+1

puede ver los detalles de la implementación usted mismo: http://www.worldofwarcraft.com/new-hp/layout/layout.xsl – nickf

+0

Pruebe ir a la página en Safari, luego vea la fuente. No utiliza el nodo de nivel superior , en su lugar tiene . El prólogo de la hoja de estilo todavía está allí, ¿está Safari mostrando el resultado de la transformación? – zachleat

+0

@zachleat: el sitio WoW utiliza el cambio de UA para determinar si se debe servir XML con instrucciones de hojas de estilo o HTML pre-transformado. IIRC, solo IE6 + y FF2 + se sirven en XML. –

3

No conozco ningún gran sitio web público que use la transformada XSLT del lado del cliente (bueno, excepto World of Warcraft mencionado por Joel :-). Entonces no puedo responder tu pregunta directamente.

Sin embargo, de vez en cuando yo mismo estaba reflexionando sobre la misma pregunta, y tengo la hipótesis de que el número de tales sitios en Internet debe ser muy cercano a cero. :-)

La versión corta de mi teoría detrás de esta hipótesis es esta: con la excepción de algunos casos bastante exóticos, la provisión de la opción XSLT del lado del cliente simplemente no vale la pena. :-)

2

La empresa en la que trabajé en 2001 lanzó un producto de servidor que implementó exactamente la arquitectura que describe. Tuvimos muy buen éxito descargando el procesamiento a los clientes. Además, al hacer la detección del cliente utilizando el agente de usuario HTTP, pudimos usar el procesamiento XSL del lado del servidor para atender a clientes muy específicos, como los teléfonos celulares japoneses. Creo que los sitios/servicios/productos que usan esta técnica lo hacen de manera bastante transparente para los clientes. Sin embargo, creo que últimamente la tendencia es hacer el procesamiento en el lado del servidor para que no tenga que depender ni probar las implementaciones particulares de XSL para una variedad de clientes y obtendrá soporte para algunas extensiones XSL que no podría para usar al admitir la gran mayoría de navegadores.

Sé que no estoy respondiendo directamente a su pregunta de nombrar algunos sitios de renombre, pero espero ofrecer algo de valor para el problema. Entonces, básicamente, mi punto es que a menos que el ahorro de rendimiento de hacer el procesamiento de su plantilla sea más valioso que tener que QA, soporte y desarrollo para tres o cuatro navegadores sin extensiones, entonces debe quedarse con el procesamiento del lado del servidor.

0

Estoy de acuerdo con la respuesta de Elijah. Creo que usar XSLT del lado del cliente es un trabajo difícil. Tienes que hacer una gran cantidad de control de calidad para ello. Pero mientras que con el lado del servidor, no haces ese control de calidad. Tienes que ocuparte de todo tipo de clientes y posibilidades mientras usas el lado del cliente. Puede existir la posibilidad de que su código se rompa al usar XSLT del lado del cliente.

0

Puedo ser parcial cuando digo esto, pero trabajando en una aplicación web que hace esto, lo odio. La única razón por la que es incluso viable es porque los clientes son solo IE6 +. Incluso entonces, hay problemas con eso. Encuentro que XSLT es muy difícil y sugeriría que hicieras esto para obtener una buena herramienta para depurar y editar XSLT.¿Por qué no usar JSON y jquery? Debe tener una mayor variabilidad estándar y menor en el lado del cliente.

2

Actualmente estoy ejecutando algunas páginas menores con XSLT del lado del cliente, todas en sueco (proyectos lillemanfestivalen.se, resihop.nu y beta). Mi mayor preocupación fue que Google no indexó el contenido de mis páginas, solo el XML sin la transformación. Sin embargo, desde que lancé resihop.nu hace una semana, aparece en google con transformación! : D

Ahora mi otra preocupación es Facebook y otras redes sociales, que no entienden cómo manejarlo. Sin embargo, todavía creo que los lados positivos son mayores que los lados negativos. La fabulosa velocidad y separación que obtengo es impresionante. Y con resihop.nu, ni siquiera desarrollo una API separada, solo señalo a los desarrolladores al sitio en sí. (Se necesitarán más trabajos para hacerlo bien)

+0

He lanzado algunos sitios más pequeños con XSLT del lado del cliente ahora. Y parece que Google realmente ataca con fuerza esto cuando lo encuentran. :( – Lilleman

Cuestiones relacionadas