Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi para la web
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2016
andres_04_08 andres_04_08 is offline
Registrado
NULL
 
Registrado: ago 2016
Posts: 9
Poder: 0
andres_04_08 Va por buen camino
Hola Jhonny.

¿Será que pueden compartir algún ejemplo de código? con las respuesta del Post 7 y 8 no lo pude resolver y no lo entiendo.
Las preguntas del Post 11 quedaron sin respuesta, tal vez aclarando esas dudas puedo terminar de entender sus anteriores publicaciones.

Muchas gracias!
Responder Con Cita
  #2  
Antiguo 14-09-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo que te estan diciendo los post es que debes tener claro como es que funciona DataSnap para asi saber que es lo que debes o no alterar.

Un servidor tipo web debe operar como una cadena Solicitud -> Respuesta, idealmente, sin que los afecten el que hayan otras llamadas concurrentes. Comúnmente la BD se convierte el repositorio del estado cambiante de la aplicación.

Ahora, hace rato que no toco Delphi y menos DataSnap, asi es la razon que no te he dado nada mas concreto. Pero si tienes claro el concepto, veras que se traslada a cualquier lenguaje de programacion.

Lo que pasa ademas es que es raro que tengas ese problema a menos que haya una alteracion en como esta configurado el proyecto (porque dudo que DataSnap no provea unos defaults sanos).

Que tal si creas un proyecto en blanco con un ejemplo minimo de lo que quieres y revisas en que se diferencia del que tienes?

----

Aun mas concretamente: Todo el setup de objetos/llamadas deberias poder ponerlo en una LINEA CONTINUA, sin que haya probabilidades de que exista una vble/objeto/archivo no transaccional que pueda tocarse desde otra linea de ejecución paralela. Dentro del código servidor no debe haber creado ni compartido nada (incluso la vble threadvar!) porque entonces tendrás potencial contención entre las ejecuciones y posibilidades a varios tipos de errores (como dead-locks) y ademas, el desempeño sera pobre.

Asi que a partir de la clase que "arranca" todo, de ESTA debe armar la linea ENTRADA -> CREA OBJETO -> CREA OBJETO .... y todo debe referenciar hacia atras (ya sea como propiedad o solo vero en términos historicos).


Es claro?
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 14-09-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Es que el desarrollo multitier es distinto al desarrollo cliente-servidor que fomento toda la vida Delphi. Eso de poner componentes de acceso a datos en un DataModule y dejarlos alli vivitos y coleando no sirven en un ambiente web en donde no hay estado, stateless como puntualizo mamcx

Lo correcto para acceder a la base de datos es:

Llega peticion -> Peticion debe acceder a BD -> Crear conexion a la BD -> Crear Query -> Ejecutar Query -> Devolver resultado -> liberar recursos usados

En el modelo cliente servidor clasico, creas una sola conexion a la bd cuanto mucho, y luego los query/command depende de como lo hagas (no estas obligado aunque siempre lo mas sano es devolver un objeto nuevo)
Responder Con Cita
  #4  
Antiguo 15-09-2016
andres_04_08 andres_04_08 is offline
Registrado
NULL
 
Registrado: ago 2016
Posts: 9
Poder: 0
andres_04_08 Va por buen camino
Buen día!, muchas gracias por sus respuestas.

Entendia que lo correcto para acceder a la base de datos es:

Llega peticion -> Peticion debe acceder a BD -> Crear conexion a la BD -> Crear Query -> Ejecutar Query -> Devolver resultado -> liberar recursos usados

Es por eso que BeforeDispatch instancio mi dataModule (TwsDataModule) para que se creen las conexiones y luego lo libero en el evento AfterDispatch .

Mi duda es si estaba bien crear una conexión por cada petición y en que evento se debería hacer, o si existía alguna forma de que las conexiones se creen y administren solas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manejo de transacciones StartKill MS SQL Server 7 23-09-2008 21:46:53
Manejo de transacciones en SQL server look SQL 6 21-08-2008 17:27:17
error en manejo de transacciones JODELSA Varios 1 11-07-2005 16:50:56
Manejo de Transacciones takeo Conexión con bases de datos 0 01-12-2004 05:29:53
Manejo de Transacciones senpiterno Conexión con bases de datos 1 08-10-2004 15:05:34


La franja horaria es GMT +2. Ahora son las 16:43:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi