Ver Mensaje Individual
  #1  
Antiguo 19-11-2015
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Reputación: 18
mjjj Va por buen camino
Conección a BD con mala conectividad

Estimado,
Tiempo atrás desarrollé una aplicación de escritorio en Delphi 2010 que se conectaba dentro de una intranet a una BD Firebird 2.5.
Todo funcionaba perfecto, hasta que se comenzaron a abrir nuevas sucursales lejanas geográficamente al servidor.

He estado investigando y una buena solución podría ser implementar Datasnap, o definitivamente desarrollar una versión web.
El tema es que en algunas sucursales funciona bien, sin embargo, existen algunos puntos donde internet es por medio de una acceso de celular, el cual es muy lento y eventualmente se corta la comunicación.

He realizado algunas pruebas con DataSnap y ocurre que cuando hay micro cortes de internet, se pierde la comunicación y finalmente el programa se termina colgando.
Pongo de ejemplo el código con el cual se cuelga mi aplicación

Código Delphi [-]
var myServer : TDSEmpresaClient;
begin
try
mistareas.close;

myServer := TDSEmpresaClient.Create(form1.SQLConnection1.DBXConnection);
myServer.mis_tareas(strtoint(Edit1.Text));
myServer.Free;

mistareas.Open;

except
try
sqlconnection1.Close;
sqlconnection1.Open;

finally
  TrayIcon1.BalloonHint := 'Problema de red.'+#13+ 'Intentando conección...';

  TrayIcon1.Animate := True;
  TrayIcon1.ShowBalloonHint;

end;
end;

donde mistareas es un TclientDataSet y mis_tareas es un procedimiento expuesto por el servidor datasnap que consulta con una TIBquery a una base de dato firebird 2.5.
El IBQuery del servidor está conectado a un TDataSetProvinder, al cual se puede acceder desde el cliente en código adjunto.
Intentando replicar el problema de los usuarios, es que desconecto el cable de red y llamo al procedimiento, observando como la aplicación de cuelga y me arroja un error... Socket Error #11001. Host not found.


Preguntas:
Cual es la forma correcta de llamar a una función/procedimiento expuesto por un servidor Datasnap, tal que si arroja algún problema lo informe al usuario y no se cuelgue??
Que tecnología me recomendaría utilizar para estos casos??

Espero me puedan guiar.
Saludos
Responder Con Cita