Ver Mensaje Individual
  #2  
Antiguo 18-11-2004
Jan Jan is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz
Posts: 90
Reputación: 22
Jan Va por buen camino
Hola, Oxa78:

En primer lugar creo que la segunda opción deberías descartarla porque es muy limitada. Debes tener encuenta que DBExpress utiliza cursores unidireccionales, es decir, que solo puedes ver en un momento determinado un solo registro de la consulta que hayas lanzado. Ademas, este cursor solo puede avanzar hacia adelante, no puede retroceder a un registro anterior. Esto hace que no se puedan enlazar directamente a componentes multiregistro como pueden ser las rejillas de datos. Para eso hace falta usar algún sistema de caché, que es una de las ventajas que te ofrece Datasnap con los TClientDataSet.

Por tanto nos quedamos con dos opciones. Estas dos solo se diferencian en que se separa parte de la funcionalidad en dos capas, que se comunican mediante COM (o DCOM si se colocan es máquinas distintas). Como comentas, no necesitas un servidor de aplicación dedicado, pero debes saber que si el tráfico no va a ser excesivo, esta aplicación intermedia se puede colocar en el mismo servidor que la base de datos perfectamente sin que implique una merma de capacidades. Yo lo tengo puesto así en un Athlon 1 Ghz con 256 Mb y atendiendo a 10 clientes junto a Firebird 1.5 y no se nota ninguna ralentización.

Pese a ello, si no te convenze esta opción, lo que yo te recomiendo es una variante que consiste en colocar la capa intermedia en una dll que acompañaría a tu aplicación. Esto te serviría para mantener físicamente separadas las capas con lo que tendrías casi todo el trabajo hecho en caso de que, en un futuro, tuvieras que recurrir al servidor de aplicaciones, o si la empresa abriera una sucursal y quisiera usar la aplicación a traves de internet, por ejemplo. Precisamente esto último me ha pasado a mi hace relativamente poco, y el trabajo a realizar para la adaptación es mínimo. Ademas, al cargarse la dll en el mismo espacio de direcciones del proceso principal, la perdida de velocidad con respecto a tener todos los componentes juntos es mínima (inapreciable).

Espero que esto te sirva. De todas formas, la mejor referencia a estos temas la puedes encontrar en "La cara oculta de Delphi 6" de Ian Marteens.

Un saludo.
__________________
Guía de Estilo del Foro
Responder Con Cita