Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cual es la mejor opcion para un sistema de esta clase... (https://www.clubdelphi.com/foros/showthread.php?t=60089)

jcarteagaf 19-09-2008 14:51:53

Aplicación Cliente/Servidor, ¿cual es la mejor opcion?
 
Hola amigos del Club, recurro a su amplica experiencia para que me den un consejo sobre el siguiente problema: Debo hacer un sistema de almacenamiento de imagenes y datos. Las caracteristicas del sistema son:

- Varios servidores distribuidos por regiones
- Cada region tendra 4 o mas clientes
- Los clientes tendran conexión mediante una red privada al servidor en algunos casos, otros deberan hacerlo via internet (mediante una VPN).
- El envio de datos se lo realizará varias veces al dia, no necesariamente todos a la vez, sin embargo al final del dia sera una hora pico, en la cual todos los clientes (o el 90%) estara enviando información a su correspondiente servidor.
- Por cada renglon de datos se enviara 2 imagenes, cada una de ellas no pesara mas de 80 Kb.
- El servidor debera encargarse de almacenar esta información en una base de datos para una consulta On line.

He estado revisando diferentes formas (componentes y/o soluciones) para realizar este tipo de operaciones:
- Indy (Gratuito)
- Real thin Client SDK (Gratuito)
- RemObjects
- .Net (usando visual studio)

Necesito su consejo para decidir cual de los anteriores utilizar o si existe una mejor alternativa para hacerlo me gustaria conocerla.

Gracias por su tiempo. Saludos

Chris 19-09-2008 20:42:58

En mi opinión:

Para diseñar una solución a un sistema, debes conocer y comprender a éste. Para ésto, necesitas la mayor cantidad de información posible. Creo, personalmente hablando, que no estás dando toda la información necesaria para hacer una recomendación.

Debes tener en cuenta muchos aspectos, como por ejemplo, exactamente cúantas veces al día son enviados los datos al ¿servidor principal?. Cúanta información en promedio es transferida en cada paquete. Tienes una buena conexión por Internet?

Mecionas a "varios servidores" lo que no me queda claro es que si la información esta distribuida entre ellos o solo funcionan como repetidores del servidor principal, uno para cada región.

Voy a dar una opinión, una idea, suponiendo que estás trabajando con un servidor principal y los demás son como repetidores para cada una de las regiones. Creo, que sería adecuado implementar un sistema de tres capas.

Saludos.

jcarteagaf 22-09-2008 01:16:19

Gracias por tu interes. Perdon si no fui muy claro en el plantemiento. Tratare de aclarar la cuestion:

- Los datos serán enviados a un servidor en cada region (o ciudad mas especificamente), cada ciudad tendra sus clientes (entre 10 y 15) y cada ciudad tendra 1 servidor.
- Los datos serán enviados varias veces al dia. El numero de datos a enviar puede varias entre 1 o 500 por lote (por cliente). Algunos clientes tendrán una flujo mayor de información que otros.

- Al finalizar el dia sera necesario consolidad esa información, de modo que cada cliente pueda consultar los datos de las otras regiones (solo consulta, de ninguno modo se permite la modificacion de datos)

- En algunos casos la conexión será directa (existe cableado entre oficinas) pero en otros casos se hara via internet.

Repito mi pregunta, de las tecnologias que indique arriba, cual seria la mas aconsejable?, existen otras alternativas?

Nuevamente gracias su tiempo y su interes.

Saludos

jcarteagaf 23-09-2008 16:15:28

Aun necesito su consejo
 
Sigo con la duda de cual es la mejor opción para la situación que he planteado. He modificado el titulo original que coloque, trate de hacerlo mas especifico. Espero puedan darme una mano en esto. Gracias de antemano por su tiempo.

Saludos

jachguate 24-09-2008 17:31:27

No tengo una idea clara de cual será el comportamiento de los clientes, pero está también la opción de utilizar DataSnap o WebServices para implementarlo.

DataSnap es una opción que a mi me ha dado resultados en diferentes entornos y podes implementarlo sobre http si existe la posibilidad de firewalls de por medio, o directamente sobre Sockets si tenes mayor control sobre las redes.

Tiene también la ventaja de que, con el desarrollo adecuado, se puede implementar aplicaciones que trabajen desconectadas del servidor y luego solamente apliquen sus cambios y refresquen su información.

En fin, sin saber mayores detalles es difícil dar un consejo puntual.

Un saludo.

AzidRain 24-09-2008 19:18:53

Yo creo que es redundante y poco práctico (por experiencia lo digo) el tener varios servidores independientes y que al final consolidan la información en otro servidor. Esto aunque como ventaja tiene que se cuenta con una capa de respaldo por cada sucursal al final resulta en más código y más cosas que cuidar para que todo funcione bien.

Yo te recomendaría montar un solo servidor principal con un motor de BD para guardar ahi las imágenes y que se puedan consultar rápidamente por cualquier cliente. Tan solo con eso ya te ahorras mucho trabajo ya que la gran parte de él lo hará el motor de BD. A los clientes les das la ventaja de que pueden consultar la información casi inmediatamente después de que ha sido actualizada y dado que únicamente se realizarán consultas y no modificaciones la programación es mas sencilla.

Ahora bien, la interface de su sistema cliente no puede ser más sencilla y hasta tienes la opción de hacer una pequeña aplicación web que puede tambien estar alojada en el servidor principal, para subir y consultar las imágenes o bien si prefieres hacer un cliente sencillo en Delphi para el mismo fin pero indudablemente es muy simple de desarrollar tanto en uno como en otro modo.

Nada mas habría que tener cuidado al elegir el servidor principal dado el tráfico que va a manejar, yo sugeriría uno con procesador de al menos 3.0GHz, DD de 260 Gb (si se puede armar un RAID de minimo 4 discos mejor) , al menos 2 GB de Memoria y una conexión rápida a internet. Obviamente montandole un SO Linux del sabor que te guste y si es posible unicamente con línea de comandos para aprovechar al máximo los recursos exclusivamente para ese fin.

jcarteagaf 24-09-2008 21:27:12

Muchas gracias por las respuestas.

jachguate:

Los clientes lo unico que haran es enviar la información y las imagenes, el servidor debe indicarles si la información se recibio con exito o no.

De ninguna manera los clientes trabajaran desconectados, ya que su unica función será enviar la información. Existe otra aplicación que se encarga de generar la información y las imagenes en cada cliente.

AzidRain

Por la naturaleza de la aplicación y debido al alto trafico que se generara en ciertas horas pico, es mas optimo tener un servidor por ciudad. Ademas la velocidad de envio sera menor (ya que algunos estaran conectados directamente al servidor)

La segunda parte del proyecto es laconsulta de la información para lo cual se tiene pensado una pagina web (la decision esta entre usar PHP o ASP.Net), luego abrire un hilo para pedir su consulta sobre este aspecto.

Nuevamente gracias por su tiempo.

Saludos.

AzidRain 24-09-2008 22:04:38

A que llamas "alto tráfico" según lo que has platicado no le veo mayor problema, si tomamos en cuenta que los archivos a enviar no pesan mas alla de 100K lo cual bajo estándares actuales es bastante poco. Digamos que cada cliente va a subir diariamente 20 Mb de info. de todas maneras es poco y el motor no tendrá problemas, de todos modos no puedes evitar el tráfico hacia el servidor principal pues en algun momento tendrán que actualizarlo todos los "servidores regionales" generando exactamente el mismo tráfico que si lo hubieran hecho los propios clientes desde el principio.


Para la consulta de la info. de acuerdo a lo que comentas es más recomendable PHP pues no necesitas gran cosa de sofisticación además de que te dará oportunidad de montarlo en un servidor Linux que como ya te comenté te permitirá sacar el mayor provecho de los recursos del servidor.

jcarteagaf 24-09-2008 23:55:38

Gracias por tu pronta respuesta y por tu tiempo.

Tienes razon, tomando en cuenta la tecnologia actual no es mucho, pero se produce un cuello de botella cuando se esta llegando a la hora limite, en ese momento todos los clientes enviaran la mayor cantidad de informacion, haciendo trabajar al servidor a toda su capacidad. Me olvide mencionar que existe una hora limite de envio, llegada a esa hora se cerrara el acceso al servidor asi que todos trataran de enviar la mayor cantidad de info momentos antes de la hora de cierre.

Con respecto a PHP ya el amigo Chackall me aconsejo lo mismo, voy a plantearlo como solución (a estudiar se ha dicho....).

Saludos

jachguate 24-09-2008 23:56:24

Cita:

Empezado por jcarteagaf (Mensaje 316106)
Los clientes lo unico que haran es enviar la información y las imagenes, el servidor debe indicarles si la información se recibio con exito o no.

Creo que esto se sobreentiende en todos los casos y probablemente soy yo quien no he sabido expresar la pregunta, pero es que todo está mas o menos vago.

Tratando de ser mas puntual, podrías basar la aplicación front-end en controles asociados a datos, valiéndote del uso de DataSnap, lo que simplifica mucho las cosas, pues es este quien se encarga de gestionar la forma en que se transmitirán los datos y en delphi vos lo ves como cualquier otro DataSet.

Otra ventaja del uso de DataSnap, que ya había comentado, es que podes montar el servidor sobre http.

Cita:

Empezado por jcarteagaf (Mensaje 316106)
De ninguna manera los clientes trabajaran desconectados, ya que su unica función será enviar la información. Existe otra aplicación que se encarga de generar la información y las imagenes en cada cliente.

Trabajar desconectado no es un requisito indispensable... solo algo que se puede lograr.

Un saludo.

jachguate 24-09-2008 23:57:51

Cita:

Empezado por jcarteagaf (Mensaje 316135)
se produce un cuello de botella cuando se esta llegando a la hora limite, en ese momento todos los clientes enviaran la mayor cantidad de informacion, haciendo trabajar al servidor a toda su capacidad.

Si hay clientes por Internet, creo que el cuello de botella será el ancho de banda mucho antes que la capacidad de proceso del servidor.

Es mi opinión.

Un saludo.


La franja horaria es GMT +2. Ahora son las 06:44:30.

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