PDA

Ver la Versión Completa : ¿TDCOMConnection o TSocketConnection?


Sergio J.
05-11-2004, 15:06:42
Hola a la sala:

Llevo bastante tiempo desarrollando y manteniendo una aplicación distribuida en tres capas usando BDE (con BD Firebird) y DCOM, pero he oido que es la peor opción para este tipo de desarrollos por el tiempo de acceso, problemas con permisos del DCOM en servidor, etc.

Quiero migrar a TSocketConnection y DBExpress en dos fases pero necesito que alguien me oriente un poco, por lo menos para saber si esta migración se puede hacer en poco espacio de tiempo y si realmente merece la pena.

Supongo que tendré que retocar tanto el Cliente como el servidor pero no se en cuanta profundidad.

Espero comentarios. Gracias.

carlos7
16-11-2004, 17:35:00
Bueno, por lo que cuentas, vas a cambiar varias cosas. En lo que respecta la conexión por sockets, yo creo que los cambios son muy pocos, ya que solo te afectan a la parte cliente, en la que debes cambiar el TDCom.. por el TSocket.. y en el servidor ejecutar el SocketServer de Borland.

Con respecto al cambio a DBExpress, este ya puede ser más trabajoso y es el que afecta de lleno al servidor de capa intermedia. Yo personalmente tuve algunos problemas con DBExpress (bugs, etc) y prefiero los componentes Ado, pero no se que tal funcionan accediendo a FireBird...

Saludos.
Carlos.

Sergio J.
16-11-2004, 17:58:00
Gracias por el comentario Carlos7, efectivamente el cambio lo he realizado ya en el cliente y solo he cambiado el componente de la conexión, ya que comparten muchos de los procedimientos como AppServer, ServerGUID, y demás.

Deberé desarrollar una pequeña aplicación para configurar en los clientes, el nombre o la IP del PC servidor, y procurar dejar abierto en el firewall del servidor el puerto 211 que utiliza Borland Socket Server.

Me preguntaba porqué en la propiedad TSocketConnection.Host no puedo asignar 'localhost' ya que me da el error "Windows socket error: No se ha podido establecer conexión ya que el equipo de destino ha denegado activamente dicha conexión (10061), on API 'connect'"

Tampoco sé si puedo utilizar otro Servidor de socket aparte de scktsrvr.exe.

Un saludo y gracias.

carlos7
17-11-2004, 15:44:01
Hola Sergio,

Claro que puedes poner LocalHost. Si te da ese error es porque no tienes funcionando el socket Server en tu propio ordenador. Tambien puedes poner en la ip 127.0.0.1.

No se si hay otros servidores de sockets, pero este de Borland no funciona mal...

Saludos.

Toni
17-11-2004, 16:54:25
Hola Sergio,

Tambien tienes la posibilidad de utilizar los componentes IBX que vienen con delphi, para acceder a Interbase y Firebird. Mucho mejor que utilizar el BDE.

Funcionan muy bien, son componentes nativos de delphi.

Saludos,

Sergio J.
17-11-2004, 19:06:55
Lo del error...
"Windows socket error: No se ha podido establecer conexión ya que el equipo de destino ha denegado activamente dicha conexión (10061), on API 'connect'"
era debido al firewall, ya que el servidor de socket lo tenía arrancado y he tenido que añadir 'localhost' a la lista de direcciones permitidas.

Por lo de los componentes Ibx no se si te refieres a los que hay en la paleta Interbase, he oído que los dbExpress también van muy bien para acceder a la base de datos.

Tendré que plantearme pronto el quitarme de encima el BDE.

Gracias por todo...

Fernando
28-02-2005, 20:39:27
Hola Delphimaniacos:

Tengo una aplicación en D7 con ADO.

En red local funciona bastante bien. Pero ahora en la empresa instalaron una conexión a otra ciudad (30 kms.) utilizando frecuencia de radio o algo por el estilo.

Ahora bien, lo que necesito es conectar por medio de TCP/IP las dos ciudades (redes)

Si hago la conexión tipo Red Local, los queries tardan muchos minutos y algunas veces se pierde la conexión.

¿Podrían orientarme al respecto?

Gracias de antemano

Toni
01-03-2005, 12:22:35
Hola,

Pues te va a tocar modificar el programa para que no envie masivamente tanto datos a los clientes a traves de la red. Tendras que cambiar el planteamiento de tu aplicación o bien realizar un modulo especifico para las conexiones remotas.

No se trata solo de cambiar unos componentes por otros.

Saludos,