FoxPro/Visual FoxPro - FORMA DE DE TRABAJAR ??

   
Vista:

FORMA DE DE TRABAJAR ??

Publicado por alexcoinc (449 intervenciones) el 15/02/2010 17:25:26
Buenos dias

Necesito comentarios, recomendaciones y consejos:

En la actualidad:

Mi aplicación y su base de datos y tablas las copio en un equipo que "funge" como servidor de la red y obviamente del aplicativo.

En otras palabras desde los equipos cliente corro mediante una unidad de red logica, el aplicativo que está en el servidor.

Lo que realmente pasa es que si entran al aplicativo 15 clientes, cada uno "dispara" la aplicación sobre la misma maquina (15 veces) y eso ocasiona saturación en ella.... eso creo !!!

Lo que pretendo hacer es:

Copiar el ejectuable en cada cliente y direccionar la apertura de las tablas a la unidad de red correspondiente, para que el aplicativo se ejecute en cada maquina a nivel local y solo actualice los datos en el equipo servidor (en la unidad lógica).

Sé que la implicación "maluca", sería en el momento de una actualización del aplicativo, pues se tendría que reemplazar dicho aplicativo tantas veces como máquinas clientes se tengan.... eso creo!!!???

Qué otra implicación tendría ??

Que otro consejo me pueden dar ??

Les agradezco de antemano !!

alexcoinc
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:FORMA DE DE TRABAJAR ??

Publicado por michael (45 intervenciones) el 15/02/2010 18:06:15
comentario.

hace unos meses trabaje una aplicacion pequeña donde hice algo similar
en una maquina tipo servidor copie mi ejecutable y desde los clientes
solo corria mi ejecutable \\servidor\programa\programa.exe con un acceso directo
hice la prueba con un maximo de 6 usuarios conectados al mismo tiempo y funcionaba muy bien , la base de datos que use si fue oracle con vfp9

pienso que si te corre algo lento seria de analizar mas especificamente en que parte es o si es a nivel general o por opcion o el diseño de tus tablas e indices en fox.

saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por alexcoinc (449 intervenciones) el 15/02/2010 19:12:43
Gracias por contestar

Eso que dices que haces, es lo que yo he venido haciendo ... y no con 6 clientes, sino con mas o menos 16 o 20 usuarios.

PERO, ha llegado este momento, en el que a termino personal, y no por que esté funcionando mal, quiero saber (y esos son los comentarios solicitados) si es buena idea o no ... el trabajar ejecutando el .EXE en cada cliente y enrutando donde estan las tablas (unidad lógica)... O si es mejor seguir trabajando, como en la actualidad, es decir que todo este en una central y desde cada maquina "lance" el aplicativo (que corra muchas veces el ejecutable en el servidor, cada vez que un cliente entre) ???

Sigo esperando sus comentarios , recomendaciones, consejos y sugerencias .

alexcoinc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por andy (221 intervenciones) el 15/02/2010 19:25:53
Yo trabajo de la siguiente forma, mi sistema tiene subcarpetas \DATOS y \TEMP, en ella guardo las tablas compartidas y las tablas temporales, respectivamente.
Luego instalo la totalidad de la aplicación en cada maquina, a continuación “mapeo” la red

Establezco la ruta al SERVIDOR (o a la PC que va hacer de Servidor ) y a los \DATOS:

ruta=GETDIR()

y lo guardo en un campo(ruta) de otra tabla (miconfig.dbf), donde tengo la configuración general de la aplicación, así cuando ARRANACA la aplicación, establezco donde buscar los datos.

USE config
m.ruta=ruta
SET PATH TO (M.RUTA)

A continuación BORRO de las TERMINALES la subcarpeta \DATOS y listo!!
Así cada una de las terminales accede a los datos compartidos del servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por santiago (376 intervenciones) el 15/02/2010 20:03:46
Hola, el tema es amplio, asi que comenzare por tu primera duda.

El tener un exe en cada usuario y todos los exes a su vez accedieran a la base de datos, viene desde la epoca del Clipper y sus similares (foxpro, foxbase, dbase, etc), esto se hacia porque cada vez que se ejecutaba el exe, gastaba una parte de la memoria ram base (640kb) de cada maquina, versus el ejecutar todos desde el servidor el exe y todos a su vez descontar de la ram base del servidor(640kb) cada uno la misma cantidad de ram, esto pues era inviable y se hacia lo primero.

Actualmente (32 bits), ya no es necesario, pues se accede al servidor al exe y se gasta la memoria fisica (256 mb, 512 mb, 1giga, 2 gigas, etc), de la maquina desde donde se invoca el exe, de tal modo que el servidor no se afecta por dicha razon, la cantidad de memoria que cada exe consume en cada maquina de cada usuario, varia de acuerdo al tamaño del exe y sus componentes (mas ó menos desde 32mb hasta 1gb).

Entonces, deducimos pues que ya no es necesario tener un exe por cada maquina de cada usuario.

continuara...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por michael (45 intervenciones) el 15/02/2010 21:25:10
comentario.

una de las ventajas de tener un exe en un servidor y de ahi
tenerlo mapeado en los clientes
es que cuando hagas una actualizacion , solo actualizas ese exe
y no te preocupas por saber en que maquinas lo actualizaste y cuales
se quedan desactualizadas.

seria de evaluar el tema si accedes tambien desde otros puntos remotos y ver tu velocidad de enlaces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por es_binario (757 intervenciones) el 15/02/2010 22:29:07
Hace ya mas de un año en una ocacion un cliente me pidio que fuera a ver el programa que un conjunto de pogramadores le habia hecho para el control de un hospital, todo el control de pasientes pagos en fin. me quede muy sorprendido no por que fuera el programa hecho en visual basic o con access, sino por el hecho de que todos los equipos habia un acceso directo a una carpeta en un servidor en la cual se compartia completamente la aplicacion incluso con el ejecutable, esa fue la primera vez que alguien hiciera algo asi, ahora con los comentarios de santiago entiendo que era una practica comun, pero me atrevo a decir de tiempo de 1990 y tantos no en el 2009 que fue cuando fui.

Personalmente considero que si una aplicacion se va a manejar en red debe de pensarse de tal forma y contruirse en base a un cliente servidor. Te podria sugerir que cambiaras algunas cosas de tu aplicacion pero serian muchas, en ocaciones el hecho de no tomarnos las cosas en serio nos hace tomar malas deciciones y trabajar mucho en algo que no va a quedar bien, puedes dedicarle algo de tiempo a ese metodo que tienes y tratar de corregir algunas cosas usar los locks para bloquear los registros pero la verdad es que tarde o temprano volvera a colapsar.

Uno de los problemas con esos metodos son los temporales como dice andy, cada que nosotros hacemos una consulta sql o creamos un cursor foxpro crea una copia de la tabla dbf con los resultados y nos la muestra segun los parametros de busqueda que realisemos, ahora imaginate a 15 personas haciendo consultas sobre la misma tabla digamos la de articulos, para hacer un presupuesto una factora o recibir mercancia, foxpro crea una sesion de datos para cada conexion si esta en la version 5.0 o superior pero aun asi eso le da carga al servidor, el mayor problema es la carga de pasar esos datos por la red, en cuestion de segundos, por eso la lentitud.

Te recomiendo que migres tu aplicacion a Mysql que es muy rapida y asi simplemente el servidor tendria la base de datos y un numero de usuarios que pueden acceder a esa base de datos, olvidandote de muchas cosas y haciendo mas rapida y mas segura tu aplicacion final.

pero debo ser honesto, para tener un buen rendimiento debes de trabajar almenos con la version 8.0 y tener conocimientos del cursor adapter esto para una buena eficiencia en los reportes.

Saludos desde Mexico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por PrincipianteII (9 intervenciones) el 16/02/2010 02:47:12
Si se hace todo mediante cliente-servidor (por ejemplo con bases en MySql), también tiene que haber un ejecutable en cada puesto??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:FORMA DE DE TRABAJAR ??

Publicado por xx (378 intervenciones) el 16/02/2010 13:07:07
Solo una aclaración el exe no se ejecuta en el servidor, este solo lo lee y lo envia por pedazos al terminal que lo solicita, en relacion a si conviene o no utilizar tablas NATIVAS o CLIENTE-SERVIDOR todo depende del rendimiento de tu aplicacion y como esta diseñada la estructura de tu Base de datos si esta mal diseñada obviamente se ejecutara lentamente si esta bien diseñada pues tendra un buen desempeño ahora nunca se puede comparar el rendimiento de TABLAS NATIVAS con las de una base de datos CLIENTE-SERVIDOR o SQL ya que estas tienen un mejor rendimiento porque todos los procesos sobre las tablas se ejecutan en el servidor (o sea localmente) y no en las terminales el cual representa tener que fragmentar las tablas y enviarlo al terminal que lo solicita para que este pueda procesarlo, Peeero no todo es color de rosa con CLIENTE-SERVIDOR por ejemplo si deseas poner tu aplicación en una sola maquina debes cargar el software SQL en caso que exista y aparte tu aplicacion el cual consume muchos recursos en caso que se pueda ejecutar, no asi usando TABLAS NATIVAS que en este caso gana ventaja sobre SQL, aparte de eso las SQL tienen una curva de aprendizaje muy dura, en fin debes analizar estas situaciones antes de decidir si con que te conviene trabajar, YO por depronto trabajo con TABLAS NATIVAS pues se ajusta mejor a mis necesidades, Peeero eso si como servidor uso el preciado FEDORA con samba que no lo cambio por ningun WINDOWS ya que este es superior en cuanto a desempeño es un poquito mas dificil de aprender pero nada que un poco de tiempo de uso no te pueda enseñar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar