FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Conectar directamente una aplicacion a través de adsl como si fuese un red local no es viable ya que como sabreis cuando nos hablan de velocidad adsl de 512k o 1Mb nos estan hablando de velocidad de descarga, sin embargo la de subida en menor, sino recuerdo mal sería a 128k y 256k respectivamente, por lo tanto el cliente puede tener la velocidad de 1mb pero donde reside la base de datos, como es la que sirve los datos su velocidad máxima será de 128k o de 256k. Recordar que estas velocidades son las teoricas de adsl, en la practica son menores. Ademas hay que tener en cuenta que las velocidades son en bits, por lo tanto si lo pasamos a bytes que es lo que nos interesa tendremos velocidades de subida de 16 bytes o 32 bytes por segundo. Si uno hace una consulta por ejemplo que devuelva 20 registros en un dbgrid y cada registro tuviese 100 bytes de datos estaríamos hablando de 2000 bytes de descaga que nos devuelve la consulta. Esto en red local es instantaneo pero con adsl tardaría 125 o 62,5 segundos respectivamente. Es decir, no es viable.
Solución: Poner un servidor de terminales, es decir, poner un servidor por ejemplo con windows 2003 server con la opción de terminal server, y los puestos con xp profesional o w2000 profesional. En esta solución habría que tener en cuenta bien el tema de licencias y además saber que esta solucion lo que hace es que la aplicacion se ejecuta en el servidor por cada terminal conectado, y lo que circula por la adsl son realmente pantallazos. Los colores de conexión tenemos que saber que son a 256 colores para acelerar la descarga, pero es suficiente para la mayor parte de las aplicaciones. Tenemos que tener en cuenta el numero de usuarios que se conectarán a la vez para poner un servidor adecuado en velocidad y memoria ram suficiente para que no se colapse. Este tipo de instalaciones las he hecho con frecuencia y funcionan bien y rápido, lo único es el coste, ya que yo recomiendo poner un sevidor de marca en condiciones, y ya sabemos lo que supone esto. |
#2
|
||||
|
||||
Cita:
Cita:
|
#3
|
||||
|
||||
Resp
Esplico un poco de como he pensado trabajar para solucionar dicho problem.
Con un servidor d epalicaciones y en los clientes se replic al base de datos pero solo lo necesario. cuando un cleinte hace un insercion o modificacion o borrado le envia al servidor la informacion antes de realizar la accion localmente el servidor realiza la peticion si esta fallo en via un codigo d erro o un mensaje o x pero algo que diga qu efallo si no fallo, se incremente una variable un campo un generador que indica que hubo algun cambio en dicha tabla y lo envia al cliente, como todo funciono perfecto el cleinte termina d egurdar sus datos y si es necesario lo baj aa discos por si un apagon o un error. Uan ve¿z qu eel servidor realiza la accion exitosa le envia los cambios al resto de los cleinte que esten conectados osea el registro en caso de insercion o modificacion y si es borrado solo envia la clave unica y en todos los casos tambien envia el valor de la variable o genrador que indica los cambios de la tabla dicha accion la reciven los cleinte sque esten conectados y hacen los indiqeue la accion; El campo d ecambio lo lame de aui en adelante GenTablaChg Tabla es el nombre de la tabla. Ahora vemso el meoyo d el acosa y como se incrementa al velocidad. Vamos un paso atras. Cuando el cliente se conecta pide todos lso cambios ocurridos en las tablas que el debe tener locales. ¿Como lo hace?. Primero envia todos pide todos los GenTablaChg y los copara con los que posee local mente en el caso qe se alla traido la tabla sino debe traerse la completa. Si en algun moemento se ha traido ala tabla entonces compra todos los GenTablaChg que posee local mente y si alguno es mayor que lo que el tiene indica que dicha tabal cambio si no quiere decir que su tabal esta iguala la del servidor. Si la algun GenTablaChg es mayor que su correspondiente localmente entonces este envia los campos primarios(en mi caso yo uso un id unico aparte de los cambios primarios para solo envia los id). Ha se me habia pasadoo que cada tabal tiene un campo de la ultima modificacion Entonces envio lo ids ejm.1, 23, 45, 67 mas la fecha de la ultima modificacion y en el servidor compara todos loa ides enviados con lo side de la tabla. Octeniendo los registros insertados Se compara los ids que son enviados y no esten el servidor y esto te devuelve lso insetados. Octeniendo los registros modificados Se hace los mismo que en el caso anterior pero agrgando la condicion que la fecha enviada sea meyor que l afecha del los del servidor, com esto octenemos los modificados. Y fianalmemte los borrados Se compara los id que este en lo senviados y no esten el servidor esto te da los borrados. Luego armas tu dataset con un acampo qu eindique la accion arealizar. Bueno teniendo le cuenta que para los borrdso solo envias los id ye le res¿to d elos campos son nulos. LA lelgar al cleinte el cleinmte verifica la accion si es insertar lso inseta en su data local si el modificacio nmodifica lso datos y si es borrado borra con lo sides enviados y baja a disco por si acaso. Espero que esto te sirva. Mira lo que si te digo es que hay que echar codigo trancao. Por que es trabajoso. Ha te digo que estoy haciendo una aplicaion d este tipo con renobjects y clein datset y uso dbaware. Y no he roto las reglas de uan aplicaion multicapa la que las capas las uso entre el servidor y los cleintes y no en el los cleinte sy la data local. Aunque puedes usar las capas tabbien en los clientes. Pero ya con le trbajo que daria hacer la reacionentre el cleinte y el servidor es aceptable usar dbaware en los cleintes. ¿Ho no?. Ha una cosa mas por favor den una opinion algo por el estilo par asaber si ahan leido el post.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#4
|
||||
|
||||
Resp
Mira para hacer replicaiones.
Lea acerca de un componete que se llama copycat. Que no lo he visto ni usado solo me comento mi compañero de trabjo
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#5
|
||||
|
||||
rastafarey, creo que cuando limpiaste el teclado, lo montaste con algunas teclas cambiadas de sitio
No te molestes, es una broma, sin ánimo de ofender. Ya imagino que has tecleado rápido y no te has fijado mucho en la pantalla. Saluditos. |
#6
|
||||
|
||||
Checa Esto....
Si Tiens en el servidor algún WinServer usa en los clientes el Terminal Server, con esto trabajas como si estuvieses en el servidor, en realidad es así
Saludos.... |
#7
|
||||
|
||||
Resp
Si asi fue normal mente tecleo en un editor corrijo y luego envio.
Pero esta vez estaba un poco apurado. Ha el ejemplo qu eplantee ya lo monte con remobject tkbmmen y al parecer funciona bien. Pero no tengo como probarlo a nivel wan. Si a alguien le interesa .
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#8
|
|||
|
|||
Cierto, lamento mi error, no se en que estaba pensando, si tenemos una velocidad de subida en la conexion del servidor de la base de datos de 128k significa que nos puede servir como máximo 16000 bytes por segundo, y si es de 256k nos serviria como máximo 32000 bytes por segundo, aun así, o se optimiza mucho el sistema de consultas sobre la base de datos o el manejo de la aplicacion sería muy lenta sobre todo si trabajan muchos usuarios al tiempo. Pienso que terminal server o su superior tanto en prestaciones como en coste Citrix sería la mejor solucion. Todo está en evaluar concienzudamente la cantidad de datos que devolverian las consultar de nuestra aplicacion y así estimar tiempos de respuesta.
|
#9
|
||||
|
||||
Resp
Te recomiendo hacer conexiones directas a al abase dedatos en lan y para salir qu ela comunicacion se establesaca entre servidores y no con clientes
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
|
|
|