Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Intercambiar información entre bases de datos por Internet ¿TCP o FTP? (https://www.clubdelphi.com/foros/showthread.php?t=35593)

Ariel Pérez 15-09-2006 01:14:27

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.

droguerman 15-09-2006 03:40:26

creo que deberias revisar un poco lo que es replicacion de bases de datos

Ariel Pérez 15-09-2006 08:28:35

Hola droguerman, agradezco tu interés, como me temía seguramente no me he explicado con suficiente claridad antes, ya que lo que necesito no es replicar una base de datos en otra, lo que necesito es enviar determinado registros, de una base de datos a otras, pero éstos registros no van a la misma tabla, hay un proceso intermedio que los pasa de una tabla a otra (con algunos campos comunes y otros diferentes), luego en el cliente destinatario se guarda en una tabla y en el cliente remitente en otra, pero parte de esa información es la misma, por otra parte no es tampoco ni toda las modificaciones de la BD ni todas las tablas, ni todos los registros, o sea es solamente determinados registros de un cliente van a parar a determinados clientes destinatarios.

Imagínate por ejemplo un intercambio de mensajes, “el cliente 1” le envía un mensaje a los “clientes 2, 5, y 8”, por ejemplo, luego el mensaje se guarda, en el “cliente 1” en una tabla de “mensajes enviados” con una determinada estructura, mientras que en los clientes receptores del mensaje, se guarda en una tabla de “mensajes recibidos” (con una estructura diferente a mensajes enviados), pero parte de la información es la misma, luego los “clientes 3,4,6,7, etc.”, no reciben esa información, o sea, el intercambio es selectivo, de una tienda a las tiendas que cumplan determinados criterios en cada caso.

Gracias.


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

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