Pregunta

Hago mucha programación de sistemas en los que mis aplicaciones no tienen posibilidad de usarse para comunicarse a través de la web o verse a través de un navegador.Sin embargo, la dirección ha presionado para utilizar XML.Por ejemplo, si quiero llevar un registro de tiempo, podría usar un archivo de texto como este:

comando fecha hora proyecto
en 2008/09/23 08:00:00 PROJ1
cambio 2008/09/23 09:00:00 PROJ2
salida 23/09/2008 12:00:00 PROJ2
en 2008/09/23 01:00:00 PROJ3
salida 23/09/2008 05:00:00 PROJ3

El XML se vería así:

<timelog> <timecommand cmd=in date=2008/09/23 time=8:00:00 proj=PROJ1/>
...
<timecommand cmd=out date=2008/09/23 time=5:00:00 proj=PROJ3/>
</timelog>

Algunas de las ventajas iniciales de la versión de texto que veo es que es fácilmente legible y analizable con expresiones regulares.¿Cuáles son las ventajas de utilizar XML en este caso?

¿Fue útil?

Solución

No hay absolutamente nada de malo en utilizar formato de datos basado en texto.Ha sido el estándar de facto durante décadas.Grandes sistemas financieros mainframe aún úsalo hoy.Los beneficios son que es trivial de producir, trivial de consumir e increíblemente liviano.¿Y qué hay de los archivos de registro?¿Conoce alguna plataforma de producción que no ¿Generar su archivo de registro en un formato de texto delimitado (web, aplicación, servidor de base de datos)?

La desventaja de los archivos de texto plano es que si el formato cambia, entonces hay que modificar tanto el productor como el consumidor de manera no trivial para poder soportar el cambio de formato.Por supuesto, si es sólo un humano el que consume el resultado, entonces sólo tienes que cambiar el productor.

La belleza de XML es que el análisis de los datos es independiente no sólo de los datos sino también del formato de los mismos.Lógicamente le pasas tanto los datos como el formato de los datos, ¡y listo!Todo funciona.No es exactamente tan simple, pero esa es la premisa.Puede cambiar el formato de los datos, y sus productores y consumidores sólo tienen que cambiar trivialmente (si es que lo hacen).

Lo feo de XML es que puede ser un perro de gran rendimiento (¿alguien es SOAP?) y muy pesado.Definitivamente pagas un precio por su extensibilidad.Hay casos en los que es absolutamente la solución técnica optimizada para un dominio de problema determinado, y hay otros casos en los que no lo es.

Entonces, si se trata de un registro simple que un humano leerá, manténgalo en un archivo plano.Si es una aplicación simple que se comunica con otra aplicación única y las comunicaciones no cambiarán drásticamente con el tiempo, el archivo plano es definitivamente más rápido y liviano de implementar, pero XML no es una mala opción.Si varias aplicaciones necesitan consumir los datos que usted proporciona o si el volumen de cambios en la comunicación va a ser alto, utilice XML.El mantenimiento de la interfaz será más fácil con el tiempo si lo hace.

Otros consejos

Me vienen a la mente un par de beneficios:

  • Es más fácil analizar otras aplicaciones
  • Es más fácil entender lo que contiene el documento de un vistazo
  • Facilita la incorporación de datos a un panel de gestión
  • Hace feliz a la gerencia con poco dolor para usted.

Las desventajas, como yo las veo:

  • Significa cambiar el código existente, probablemente innecesariamente
  • Posible ligera degradación del rendimiento, dependiendo de cómo cree los documentos en comparación con cómo crea los documentos actuales
  • Es XML por el XML, lo cual es jodidamente estúpido.

Y, para cerrar, una cita que pretende ser irónica: XML es como la violencia.Si no resuelve tus problemas, no lo estás usando lo suficiente

La característica principal de XML en un caso como este es que XML puede validarse y controlarse.En la versión de texto, ¿cómo podría verificar mediante programación que el archivo tenga el formato correcto?XML está diseñado para crear documentos estructurados y válidos, y el beneficio resultante es un formato rígidamente controlado y estructurado de manera confiable.Mantener código que lee desde nodos XML también será mucho más fácil y estará diseñado de manera más lógica que mantener una serie de expresiones regulares para leer archivos de texto.

Si utiliza XML, de alguna manera los datos serían más "portátiles".Básicamente, tendría analizadores para sus datos disponibles en la mayoría de los entornos, por lo que escribir una herramienta para analizar los datos podría ser más fácil.Además, si está en XML, puede escribir un XSLT para transformarlo a otros formatos, lo que facilita su lectura.

Dicho esto, si cambia a XML, incluso un formato simple como el ejemplo que dio, sus archivos de registro serán mucho más grandes.

Hay algunas opciones además de XML que puedes usar.jeff Impuesto sobre el soporte angular La publicación del blog habla un poco sobre esto.

Realmente, lo que debe hacer es averiguar cómo se utilizarán estos registros y luego determinar qué formato haría que esos usos sean más fáciles de implementar.

Es fácilmente analizable usando expresiones regulares, xml y xsl.

A decir verdad, no existe realmente una "ventaja" en usar XML a menos que envíe los datos a otro sistema.

XML es un metaformato, lo que significa que facilita la definición de un formato para sus datos.Esto facilita que múltiples programas, incluidos los de diferentes empresas, lean y escriban datos en el mismo formato.Es especialmente adecuado como descripción de datos jerárquicos complejos.

En el ejemplo que usted describe arriba, los datos parecen ser registros aislados en un formato fijo, sin estructura ni jerarquía, en cuyo caso no veo ninguna ventaja en usar XML.Sin embargo, el ejemplo puede no ser representativo: sus otros archivos pueden contener datos más estructurados.

¿Es ese un archivo de registro continuo?

¿Cómo vas a escribir el para crear un documento válido?¿O lo leerá, agregará la nueva entrada y la escribirá cada vez?

Los archivos de registro son candidatos perfectos para líneas de texto sin formato bien estructuradas que simplemente agrega.

En la mayoría de los casos (no siempre), XML facilita la comprensión de los datos porque, de repente, tienes metadatos alrededor de tu activo que describen lo que hay frente a ti (legible por humanos).

XML también es muy accesible.Lo que quiero decir con esto es que, como lo mencionaste, no deseas utilizar expresiones regulares en XML.Hay herramientas como XPATH (XML Path Language) que hacen que las consultas XML sean divertidas.No es necesario sacar algo que nadie más pueda leer cuando puedes recorrer fácilmente XML usando algo como XPATH.

Hay casos en los que XML hace lo contrario (en términos de legibilidad) y, a veces, XML también supone una sobrecarga.No siempre es la mejor opción cuando se intercambian datos entre sistemas (p. ej.Echa un vistazo a algo realmente liviano como JSON).Y este tipo de intercambio tampoco tiene por qué realizarse en la web.

Si bien el uso de XML para archivos de datos significaría que sus datos pueden autodescribirse y quizás estar mejor organizados, el resultado final suele ser archivos de datos mucho más grandes que antes.

Pregúntese, ¿para qué se utilizan los archivos?¿Se van a cambiar?Si es así, ¿quién paga y quién lo presupuesta?

¡Me encanta XML en algunos casos y en otros lo odio!

En el caso de la programación por lotes de sistemas como el que usted menciona, una característica importante de xml es que es compatible con casi todas partes.Entonces, hoy escribes un programa para manejar algunos datos usando xml, y dentro de 10 años, cuando necesites revisar ese programa y quieras usar una plataforma completamente diferente, tus datos xml seguirán estando bien soportados.

Si está desarrollando en .NET (especialmente .NET 3.5 con LINQ to XML), escribirá menos código para leer/escribir XML que si usara solo un archivo de texto sin formato.Además, XML simplemente hace que sea más fácil para cualquier persona leer el archivo y saber exactamente qué contiene y para qué sirve.Y no se preocupe si el XML ocupa un poco más de espacio en disco, el espacio en disco es barato.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top