ENI – Transmisión de ficheros en el esquema del Documento Electrónico

El Esquema Nacional de Interoperabilidad define en la Norma Técnica de Interoperabilidad de Documento Electrónico las especificaciones XSD para el intercambio de Documentos Electrónicos Interoperables:

Tanto en la Guía de Aplicación de la NTI Documento Electrónico como en el Manual de usuario para los esquemas XML de intercambio de documentos electrónicos y expedientes electrónicos se trata el bloque de Contenido de un documento electrónico. El fichero se puede incluir en el esquema de diferentes formas:

  • En formato XML
  • Binario codificado en base 64
  • Como referencia interna a otro punto interno de la estructura XML

La mayoría de los documentos generados en las Sedes Electrónicas son archivos PDF (binarios), por lo que la forma recomendada debería ser un binario codificado en base 64. En ambos documentos parece insinuarse que la manera de transmitir el fichero es incrustándolo en el XML SOAP codificado en base 64.

El envío del contenido de ficheros a través de servicios web empleando esta técnica presenta una serie de inconvenientes que conviene recordar:

  • El cliente debe codificar en base64 el contenido del fichero
  • El cliente debe construir en memoria una estructura XML que contiene los datos de la petición y el contenido completo del fichero
  • La petición del cliente viaja completa hasta el servidor
  • El servidor debe construir en memoria la misma estructura XML (con los datos de la petición y el contenido completo del fichero)
  • El servidor debe decodificar de base64 el contenido del fichero

Resulta evidente que este mecanismo limita el tamaño de los ficheros que pueden ser enviados a la capacidad de memoria de las máquinas y que sobrecarga el proceso al incluir la codificación y decodificación en base64.

Cómo implementar el envío de una manera eficiente

MTOM es un estándar que permite la transmisión de ficheros en tecnologías de servicios web de una manera eficiente y que está soportado tanto por WS-i como por múltiples fabricantes (Axis 2, Apache CXF, Microsoft WCF…). La utilización de este mecanismo permite enviar el contenido de los ficheros en formato binario y hacerlo en modo streaming. Gracias a estas características tanto servidor como cliente ahorran mucho tiempo de proceso (al evitar el formato base64 y la manipulación en memoria de XML) y se elimina la limitación para el tamaño del fichero que se intercambia.

Comparativa entre el envío XML base64 y el uso de MTOM

Comparativa entre el envío XML base64 y el uso de MTOM

Existen diferentes técnicas para implementar clientes y servidores que gestionen servicios web que usen MTOM, pero la única manera de garantizar la interoperabilidad entre diferentes plataformas (Java, .NET, PHP…) es utilizando el estándar WS-Policy, que permite indicar la serialización de contenidos de una manera interoperable. Dado que es posible declarar el uso de este mecanismo en el bloque de binding del WSDL, los esquemas XSD del Documento Electrónico pueden ser respetados.

Conclusiones

Las administraciones públicas deben prestar especial atención a cómo se aborda este punto por parte de su personal técnico o de las empresas de tecnología contratadas, ya que un enfoque propietario (como el basado en el “xmime:contentype” de Java) puede generar problemas de interoperabilidad entre organismos y una implementación que no soporte MTOM podría generar graves limitaciones en el intercambio de información.

Tampoco estaría de más que en la documentación suministrada por el Ministerio en relación al ENI y sus NTI, se tratase esta cuestión de una manera más profunda y detallada.

Referencias

Microsoft CodePlex – Software para asegurar compatibilidad de WCF con IBM WebSphere, Oracle WebLogic, Java Metro y Apache (Axis 2 y CXF).

Web Service Attachments Support Matrix – Estudio, aunque desactualizado, del soporte de los diferentes frameworks de servicios web para MTOM y otros mecanismos de envío de ficheros

Un comentario en “ENI – Transmisión de ficheros en el esquema del Documento Electrónico

  1. Y como ejemplo…

    Aquí tenemos uno de los primeros servicios web provistos por el Ministerio y basados en el ENI

    http://administracionelectronica.gob.es/recursos/PAE_13593951479759797.pdf?iniciativa=323

    Lógicamente el contenido de los ficheros va codificado en BASE64 en mitad de los nodos XML, tal y como se aprecia en los anexos que reflejan las peticiones SOAP.

    Me parece preocupante esta falta de previsión: hoy en día es muy sencillo enviar ficheros mediante streaming usando servicios web. E incluso es posible hacerlos interoperables entre plataformas (Java, .NET, PHP…) ¿Por qué no se está haciendo?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s