Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2012
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Estándar para Serializar datos

Hola a todos

Antes que nada, gracias desde ya por leer mi consulta.

Utilizo Delphi 6 y Firebird.
Hasta el momento utilizaba clientdataset para manipular datos y guardarlos en un archivo propio de los clientdatasets (.cds) para transportar esta información hacia otras aplicaciones Delphi.

Ahora, los entornos cambiaron y necesito compartir esta informacion pero también desde sistemas linux.
Desarrollé unas pruebas en python en Linux que toma datos de la base, los serializa (cPickle), los comprime y los guarda en un archivo binario. También hice su contrapartida, abre, descomprime, deserializa. La información es texto e imágenes.

El problema es que necesito que ese archivo pueda ser procesado también por una aplicación en Delphi para lo cual necestaría que el método, sobre todo el de serializar/desarializar, sea standard y pueda ser reconocido por otros lenguajes. En este sentido estoy algo perdido y hasta el momento no he encontrado nada.

Podría ejecutar el python desde Delphi, pero digamos que esto es casi inviable ya que las máquinas donde va a correr la aplicación delphi son de clientes y sería complicado instalar python en cada una de ellas.

Mi mayor problema es la serialización/desarialización, necesitaría un método standard, rápido y que maneje los datos en forma binaria para ocupar menos espacio.

Muchas gracias nuevamente

Un abrazo

Walter
Responder Con Cita
  #2  
Antiguo 26-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Walterdf Ver Mensaje
Mi mayor problema es la serialización/desarialización, necesitaría un método standard, rápido y que maneje los datos en forma binaria para ocupar menos espacio.
No tengo claro de a qué te refieres exactamente con serialización/desarialización.
Responder Con Cita
  #3  
Antiguo 26-01-2012
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Casimiro

Tengo entendido que para persistir o transmitir datos y asegurarnos de que la estructura y el contenido de los mismos se mantengan durante el proceso, lo mejor es serializar la información. Por ejemplo, para manejar datos a través de internet se puede utilizar JSON, XML, etc

Gracias por tu atención y cualquier sugerencia es bienvenida.
Responder Con Cita
  #4  
Antiguo 26-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, puedes usar lo que comentas o cualquier otro que te venga bien. En mi caso los envios/recepciones de datos entre sucursales/representantes/etc. las hacemos en formato texto normal, comprimido con clave, obviamente.
Realmente se envian a un servidor ftp y los demás se encargan de comprobar si hay algo para ellos en el ftp y descargarlo, descomprimirlo, instalarlo, etc. todo automáticamente, sin necesidad de que el usuario intervenga.
Responder Con Cita
  #5  
Antiguo 26-01-2012
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
El tema es que no trabajo solo texto, si no que también deben viajar imágenes tomadas de un campo BLOB de la base.
Lo que quiero hacer es "imitar" el comportamiento de los archivos que generan los clientdatasets ya que hasta hoy era lo que manejabamos y funcionaba de 10.
La traba es que ahora estos archivos deben ser generados desde una plataforma Linux y leídos por aplicaciones en Delphi en Windows.
Responder Con Cita
  #6  
Antiguo 26-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces creo que no he entendido el problema, todos los servidores de mis clientes tienen instalados linux+firebird.
Puedes guardar las imágenes con un nombre que sea la referencia/código y empaquetarlas juntas para enviarlas, luego en su destino se desempaquetan y se importan a la base de datos destino.
Responder Con Cita
  #7  
Antiguo 26-01-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Y cómo empaquetas o qué significa empaquetar la imagen?

// Saludos
Responder Con Cita
  #8  
Antiguo 26-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Con empaquetar me refiero simplemente a almacenar en un .zip
Responder Con Cita
  #9  
Antiguo 26-01-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! O sea que tu método consiste en mandar el archivo de texto junto con uno o más zip que contienen los datos binarios. ¿Es así?

Pienso que también podría usar un XML como mencionaba. En el caso de las imágenes, podría codificarlas con base64 o similar para convertirlas en texto y poderlas poner en el xml.

// Saludos
Responder Con Cita
  #10  
Antiguo 26-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, depende de lo que se haya actualizado en la base de datos, pueden ir sólo textos, imágenes o ambos ficheros juntos en un archivo zip.
Cuando se hizo esa opción no estaba muy difundido xml, o mejor dicho, yo no lo conocía , de eso hace unos 14 años y es el mismo sistema que he ido implementando en cada nuevo proyecto. Es sencillo, rápìdo, eficaz, seguro... así que para qué cambiarlo
Responder Con Cita
  #11  
Antiguo 26-01-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Una conocida máxima en programación dice: "Si funciona no lo arregles."


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #12  
Antiguo 26-01-2012
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
El problema que tengo es que las imágenes no las quieren en archivos, por eso se extraen de una base de datos y al transmitirlas se vuelven a guardar en otra base.

El problema con xml y json es que agregan notaciones y eso hace crecer considerablemente el tamaño del archivo, a pesar de comprimir antes guardar.

El método que creé en python para probar, comprime y serializa los datos en forma binaria y es muy fácil deserializarlos, desde python obviamente.

De todos modos, probé utilizar xml y efectivamente el tamaño del archivo crece demasiado.

La variante que encontré (y tal vez sea no intentar reinventar la rueda) es utilizar una base de datos intermedia, sqlite. Que soporta campos blobs, es cross-plataform, existen drivers para muchos lenguajes, el archivo de la base es transportable y además no necesita ninguna instalación en el cliente. Por supuesto me cambia bastante el manejo de la aplicación teniendo que agregar componentes y demás, pero bueno, por el momento me parece que voy a demorar menos que seguir intentando reproducir el cds de los clientdatasets.

Si a alguien se le ocurre alguna otra sugerencia, bienvenido sea.

Un abrazo y mil gracias por las sugerencias y comentarios.
Responder Con Cita
  #13  
Antiguo 27-01-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No había pensado en sqlite. Creo que es una excelente opción.

// Saludos
Responder Con Cita
  #14  
Antiguo 27-01-2012
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 21
Walterdf Va por buen camino
Gracias Roman, espero que si, aún no lo he probado

Un abrazo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Existe alguna clase para serializar un objeto en Delphi rgstuamigo OOP 4 04-10-2008 15:05:20
Microsoft, juego sucio para aprobación de OOXML como estándar jachguate Noticias 4 03-04-2008 02:03:30
tipos de datos estándar? javigh MS SQL Server 1 20-10-2007 18:39:21
Serializar oracle C++ Builder 0 18-01-2007 06:55:01
Existe algún estándar para la BD chalys Conexión con bases de datos 2 18-09-2005 16:10:43


La franja horaria es GMT +2. Ahora son las 20:33:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi