PDA

Ver la Versión Completa : Aplicación multicapa: ¿Qué protocolo de conexion me recomiendan?


Sapt_86
09-10-2011, 02:39:07
Hola a todos.

Actualmente me encuentro realizando un sistema para una institución educativa, el cual estaba a punto de terminar, pero a mi cliente se le ha antojado que el sistema este instalado en otra computadora. Es decir, una aplicación cliente + servidor en una computadora, y otra aplicación cliente en la otra que esta en red local y acceda el mismo servidor.

Hasta ahora solo bastaba mi aplicación hecha en Delphi 7 + componentes zeos + la BD MySql.

Mi intención es realizar un sistema de 3 capas para poder satisfacer los nuevos requerimientos. Además de ello me permitiría en un futuro instalar un nuevo cliente en otro ordenador más.

Pero mi duda es la siguiente:

¿Que protocolo de conexión debería usar sin tener que cambiar el motor de BD, ni los componentes zeos?

Desde ya muchas gracias por sus opiniones.

Casimiro Notevi
09-10-2011, 03:42:05
Si no he entendido mal, no tienes que hacer nada especial, tu programa es perfectamente válido.
El programa cliente lo pones en cualquier ordenador, le dices que la base de datos está en "la ip del servidor" y listo.
No tiene nada que ver con "capas".

mamcx
09-10-2011, 04:26:25
Mientras hay muchas razones buenas y validas para hacer una app multi-capas, hacerla por capricho de ultima hora de un cliente de una app terminada y posiblemente - como me ha pasado - creyendo que eso es "gratis", no es una de ellas.

Ademas, una app 2-niveles puede aguantar varias decenas e incluso centenas de usuarios concurrentes....

Sapt_86
10-10-2011, 01:50:48
Gracias a ambos por responder.

El programa cliente lo pones en cualquier ordenador, le dices que la base de datos está en "la ip del servidor" y listo.
No tiene nada que ver con "capas".

Intentare con lo que me aconsejas, lo que me preocupa es que no tuve en cuanta cuando diseñe el sistema que dos o mas clientes accedieran al servidor, por lo tanto tendré que implementar algún tipo de control al momento de las modificaciones sobre el servidor.

Leeré un poco mas sobre los componentes Zeos, y veré como lo hago.

Muchas gracias nuevamente.

Delphius
10-10-2011, 07:24:29
Hola Sapt_86,
Con todo respeto se me hace que tienes una ensalada rusa de conceptos entre multicapa y arquitectura cliente/servidor. :D

Lo que nos describes no sugiere ni de cerca a algo multicapa :rolleyes: . Yo veo cliente/servidor: varios equipos con la aplicación cliente atacando a un servidor con el server de la base de datos.
No tiene nada de raro, extraño, ni supone demasiado lío instalar tu aplicación en varios equipos. Lo importante es que el server aguante ;).
En lo que debes tener control es en uso de las transacciones, y asegurarte de que tu aplicación, como dice Casimiro, "apunte" al equipo server.

Si hubieras dicho algo como DataSnap (ex MIDAS) bueno... allí si te podría aceptar parcialmente el término multicapas. Aunque no es tampoco el correcto. Esto se conoce como arquitectura basada en niveles; en término genérico n-niveles o multinivel. O también, aplicaciones distribuídas.

El verdadero significado de multicapas hace referencia justamente a una extensión del concepto de 3 capas (capa interfaz-capa lógica-capa datos) que aplica al diseño de una aplicación hacia una arquitectura n-capas. El patrón Layers las presenta: Presentación, Aplicación, Dominio, Infraestructura del Negocio, Servicios Técnicos y Base.

Saludos,

Sapt_86
10-10-2011, 09:09:28
Con todo respeto se me hace que tienes una ensalada rusa de conceptos entre multicapa y arquitectura cliente/servidor.

Hola Delphius.

No te preocupes, no me ofendo con tu comentario, ya que es así. Lo que sucede es que he leído un poco sobre el tema, sobre todo en Internet, y me ha confundido, porque se habla indistintamente sobre estos términos en algunos casos o incluso los confunden como yo. Pero me has aclarado bastante el panorama.

Dejando de lado mi planteo inicial del sistema.

¿Qué protocolo de conexión me recomiendas en el caso de necesitar uno? ¿DCOM, SOCKET, WEB, SOAP?

Te pregunto esto porque estoy haciendo unas pruebas con Remote Data Module para comunicar dos aplicaciones, y veo que tengo varias opciones.

Acepto como respuesta cualquier link que hable de esto, ya que una explicación a lo mejor es demasiado extensa.

rastafarey
10-10-2011, 23:36:07
Eso depende mucho del uso. Puedes usar Htpp, Tcp etc.

¿DCOM, SOCKET, WEB, SOAP? no creo que sean protocolos.

lee aqui
http://es.wikipedia.org/wiki/Protocolo_%28inform%C3%A1tica%29
Ha
lee una cosa que llman remobjects.

mamcx
11-10-2011, 05:54:26
Uso Remobjects, y considero que es la mejor libreria disponible - en cualquier lenguaje- para hacer aplicaciones n-capas.

Ademas, es relativamente mas fácil que otras y mucho mas que inventarlo de cero:

http://www.remobjects.com/

Desafortunadamente, en todo caso es necesario re-pensar la aplicacion, cambiar codigo, alterar cosas, por lo que en ningun caso es aconsejable meterle a una aplicacion ya hecha el cuento a menos que se tenga recursos y tiempo para su reingenieria.

O sea, el camino mas practico es ajustar la app para que funcione de forma concurrente a la BD.

Pero, arranca a aprender sobre el tema. Una vez que lo haces no vuelves atras ;)

P.D: Una caracteristica muy util de Remobjects es que puedes hacer una app que sea un-nivel (todo en un exe) y volverla 2,3 niveles con un cambio de un componente, y re-ubicar las unidades en 2 o mas subprojectos.