Ver Mensaje Individual
  #1  
Antiguo 15-09-2006
Ariel Pérez Ariel Pérez is offline
Miembro
 
Registrado: ene 2006
Posts: 10
Reputación: 0
Ariel Pérez Va por buen camino
Intercambiar información entre bases de datos por Internet ¿TCP o FTP?

Hola a todos, estoy desarrollando una aplicación que, instalada en varios lugares remotos, con acceso a Internet, tiene que compartir cierta parte de la información, almacenada en dichos lugares, de manera que determinados registros (no todos) insertados o modificados en uno de los dos lugares, sean igualmente insertados o modificados en el resto.

Para ello he pensado en dos posibilidades, pero como carezco de experiencia en aplicaciones para Internet, solicito y agradezco, la colaboración de quien me pueda ayudar a decidir qué camino tomar.

En ambos casos he pensado en la necesidad de una segunda aplicación, que actúe como servidor, y se encargue de recibir y enviar la información de un lugar a otro, ya que los lugares que albergan la primera aplicación (a partir de ahora la llamaré aplicación cliente), no tienen una IP fija, además de que el intercambio se debe realizar a pesar de que uno de los equipos esté apagado, por ello veo necesario y conveniente el desarrollo de la aplicación servidor, la cual si estará instalada en una red con IP fija, conocida por las aplicaciones clientes.

Por un lado he pensado en implementar el intercambio mediante los componentes “TIdTCPClient” y “TIdTCPServer”, de la siguiente manera (resumida), el cliente establece la conexión y envía la información al Servidor, el cual la recibe, identifica un comando que se envía al principio del texto, comprueba que haya llegado toda la trama, guarda en la base de datos lo que sea, y notifica al cliente remitente la recepción ok de la trama, para que este no la envíe más. Posteriormente espera hasta que el cliente destinatario esté conectado y disponible, le envía también un comando (que es identificado por el cliente) más la información, el cliente destinatario recibe la trama, …etc., etc., etc., …, y responde que la ha recibido para que el servidor la elimine de la base de datos, etc., o sea, elaboro un protocolo, un poco más detallado y cuidado de lo que aquí expreso (ya que este es un proceso conocido), pero que en esencia utiliza los componentes “TIdTCPClient” y “TIdTCPServer” para enviar y recibir la información, y la información se envía cada vez que se inserta / modifica.

En paralelo he pensado en la posibilidad de hacerlo mediante FTP (TIdFTP), de la siguiente forma: el cliente remitente inserta / modifica uno o varios registros, esto se guarda en un archivo en forma de “script”, el cual es subido (FTP) al servidor, en la medida en la que estos archivos vayan llegando el servidor, este los irá reorganizando, o sea, cada vez que llegue uno, viene de un único cliente remitente, pero puede contener información para uno o varios clientes destinatarios, así que va creando nuevos escripts para cada cliente destinatario, con lo cual, cuando un cliente destinatario se conecta se puede bajar (por FTP) los archivos que hay para él, los cuales tendrán información de uno o varios clientes remitentes, una vez los baja, existe un intérprete para esos scripts que se encarga de actuar sobre la base de datos y eliminar los scripts cuando haya terminado, pero el intercambio de información no se realiza registro a registro o comando a comando sino en bloques vía FTP, cada un cierto tiempo, configurable.

Mi pregunta es, qué método debería utilizar, para el intercambio de información, el primero (con TCP), el segundo (FTP) u otro que no haya tenido en cuenta.

Como nota interesante, les argumento que la información que se va a intercambiar es de diferentes tipos, desde INTEGER Y VARCHAR hasta BLOB con texto enriquecido e imágenes.

S.O. para la explotación: Windows 2000 / Win XP y es posible que algo menor en algún cliente.

Para el desarrollo:
S.O.: Win XP.
Delphi 7
Firebird 1.5
Acceso a Internet: ADSL en todos los casos.

Si no me he explicado con suficiente claridad, o no he detallado determinados conceptos que sean necesarios, les ruego que me pregunten y estaré encantado de aportar lo que me haya faltado.

Les estaría muy agradecido de cualquier ayuda o sugerencia que me puedan ofrecer, se que aquí hay muchas personas con experiencia y capacidad demostradas, que podrán ayudarme a tomar la mejor decisión, por eso desde ahora les doy las gracias.

Que pasen un buen día.
Responder Con Cita