17 de abril de 2021

Breve Reseña Sobre Sesiones de Datos Públicas Y Privadas

Si bién antiguamente usábamos cualquier tabla desde cualquier programa (lo que luego se denominó "Sesión de datos Pública") ahora es más frecuente, aunque no imprescindible, usar "Sesión de datos Privada", que permite abrir otra copia las mismas tablas como si se tratara de otra sesión de VFP (como cuando abrís VFP 2 veces o más).

Qué tipo de Sesión de Datos quieras usar dependerá de cómo pretendas encarar tu proyecto. Voy a intentar hacer un breve resúmen de ventajas y desventajas de cada caso.

1) Ventajas de la Sesión de datos Pública

  • Las tablas son visibles desde todos los módulos del sistema (PRG, SCX, VCX, MNX, FRX, etc.)
  • El hecho de que se las tablas se abran una sola vez implica un cierto ahorro de memoria RAM, ya que por cada tabla abierta se guardan en memoria datos como: Indice actual, tipo de ordenamiento del índice, puntero de registro, etc.
  • La sesión, al ser Pública, implica usar sólo una copia en memoria RAM de los seteos (comandos SET ON/OFF) que son afectados por las sesiones de datos (en la ayuda del comando SET dice si es afectado o no por la sesión de datos)
  • Es compatible con el modo de funcionamiento de FoxPro 2.X, lo que permitiría mantener código heredado de esa versión

2) Desventajas de la Sesión de datos Pública:

  • En cada programa tenés que hacer tu propio manejo de los punteros de las tablas para que cuando abrís un programa nuevo o cambiás a otro, cada uno restaure el puntero del registro al lugar correspondiente.
  • Si desde un procedimiento llamás a otro procedimiento que cambia el puntero de una tabla o el orden de un índice que estabas usando y no lo restaurás, es muy probable que le ocaciones problemas al procedimiento original, pudiéndose llegar a cancelar el programa
  • No es recomendable para objetos COM
  • Los comandos SET ON/OFF afectan a todos los módulos por igual
  • Si la misma tabla se abre varias veces, se debe hacer con alias distintos (USE MiTabla AGAIN SHARED ALIAS ...)
  • Se dificulta hacer código genérico para manejar tablas, ya que hay que agregar manejo de punteros, índices, etc.
  • El bloqueo / desbloqueo de registros (LOCK / RLOCK / FLOCK) es más complejo de manejar, ya que si un módulo bloquea uno o más registros, otro módulo puede desbloquear esos mismos registros pudiendo provocar un problema de seguridad y/o coherencia de datos entre módulos

3) Ventajas de la Sesión de datos Privada (Objeto Session / Form / Reporte):

  • Varios comandos SET ON/OFF son dependientes de la sesión en la que se los usa (Ej: SET DELETED),lo que permite tener distintos valores entre sesiones de datos privadas (cada sesión puede tener un valor distinto para el mismo comando, sin afectar a las demás)
  • Una misma tabla se puede abrir con el mismo alias en distintas sesiones privadas
  • Si la misma tabla se abre en distintas sesiones, cada sesión mantiene automáticamente el puntero de registro de las tablas y el orden de los índices
  • Es más fácil hacer código genérico para manejar tablas, ya que el mantenimiento de punteros de registro e índices es automático
  • Es recomendable para hacer objetos COM
  • El bloqueo / desbloqueo de registros (LOCK / RLOCK / FLOCK) es más fácil de manejar, ya que si una sesión bloquea uno o más registros de una tabla, sólo esa sesión podrá desbloquear esos mismos registros, lo que beneficia a la seguridad y/o coherencia de datos entre módulos
  • Una sesión de datos Privada se comporta comosi fuera una nueva Sesión de VFP (como abrir 2 ó mas veces VFP)

4) Desventajas de la Sesión de datos Privada (Objeto Session / Form / Reporte):

  • El mantenimiento independiente de los punteros de registro, índices, valores de los comandos SET ON/OFF, etc. por cada sesión implica un mayor uso de memoria RAM por cada una de las tablas abiertas y de los comandos SET ON/OFF. Ej: Si se usa una tabla con un indice en 3 sesiones privadas distintas, en realidad es como si se estuvieran usando 6 archivos distintos.
  • El código heredado de versiones de FoxPro 2.X no funcionará del modo esperado, ya que no estaba preparado para este esquema de trabajo por Sesiones

Seguramente hay más cosas para agregar en cada caso, pero esto es para dar una idea.

Saludos

Fernando D. Bozzo

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.