Que funciones debo utilizar para hacer un programa cliente servidor, y en que secuencia deben ir
1 respuesta
Respuesta de aldob
1
1
aldob, Ingeniero en Sistemas con amplia experiencia en desarrollo de...
Cliente-servidor (CS) es una arquitectura y no un algoritmo, por este motivo no te puedo dar funciones y una secuencia de implementación. Si te puedo mencionar algunos aspectos para que los tengas en cuenta. CS se refiere a que tenés una PC que contiene datos o servicios a los que otras pcs acceden para usarlos y/o modificarlos. En las aplicaciones comunes el servidor posee la BD manejada por el DBMS y las pcs contiene la aplicación cliente que accede a los datos. *- La principal característica de CS (en implementaciones habituales) es que estás trabajando sobre una red de datos y con varios usuarios trabajando de manera conjunta y concurrente sobre los mismos datos y realizando las mismas operaciones (ej: ingresando facturas desde distintos puestos de trabajo en un comercio) Con respecto a estos dos puntos hay que tener esto en mente: minimizar el tráfico de la red y evitar conflictos entre los usuarios (ej: modificar los mismos datos (un registro de la BD) simultáneamente o que el sistema les asigne a 2 o más usuarios el mismo código para un registro nuevo). *- Afortunadamente, lo que respecta a acceso concurrente a la BD queda en manos del DBMS. Es decir configurándolo podemos determinar como se van a manejar los bloqueos de registros y los accesos concurrentes. Ante uno de estos casos el DBMS nos devuelve un error que podemos procesar en el sistema. *- En cuanto al uso de la red, la idea es evitar consultas innecesarias y reducir las consultas por validaciones u otros motivos a un mínimo. Esto se logra revisando los procesos y viendo si no hay redundancia de más. También tenés que evaluar e indexar las tablas para acelerar las consultas. *- Tenés que trabajar asumiendo que van a ocurrir errores por los accesos concurrentes y éstos no son culpa del usuario y éste no debe pagar las consecuencias. Si hay un error infórmaselo de manera clara y ofrécele una salida (ej: si te salió un error de lockeo al acceder al último número no le canceles toda la operación, reintentá un par de veces; si intenta modificar un registro que otra persona está modificando anúncialo). En un sistema que evalué una vez el usuario tenía que ingresar una cantidad impresionante de datos y al final guardar. Resulta que cada 2x3 salía error de número repetido (ver más abajo) y el sistema le tiraba error y limpiaba la ventana haciendo que perdiera todo lo ingresado, produciendo niveles impresionantes de insatisfacción al usuario y pérdida de tiempo. *- Con respecto a la obtención de los códigos del sistema (últimos números) la idea es evitar que 2 usuarios quieran guardar 2 registros con el número 3025 (por decir algo) ya que este no es un error solucionable a través del DBMS. Te paso una respuesta que brindé hace un tiempo: --- Lo que tenés que implementar es una tabla de últimos números y una función que lea y actualice esta tabla. Una estructura sencilla de la misma es la siguiente: Tabla: ultimos_numeros = nombre_tabla + nombre_columna + ultimo_numero nombre_tabla = las tablas que requieran actualización nombre_columna = la columna de la tabla que requiere actualización ultimo_numero = valor del ultimo numero Clave = nombre_tabla + nombre_columna ult_numero = f_actualiza_ult_numero(tabla, columna) La función debe leer el último número para una tabla y columna, actualizarlo con ult_numero + 1 y devolver este valor. En caso de error, devolver algún código error. En la ventana, siempre en el último momento (después de las validaciones y justo antes de guardar), no cuando la abrís, llamás a la función, obtenés el último número y trabajás normalmente. -- Este método te asegura que cada usuario va a tener un valor único del último número (en realidad te asegura es un término muy extremista ya que depende un poco de cómo implementes la función y los lockeos de registros, pero en el peor de los casos te da mucha más seguridad que lo que estás usando) En ciertos casos se puede producir la pérdida de algún número y no te va a quedar una numeración continua, pero esto es normal. ---