Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con aplicacion multicapa (https://www.clubdelphi.com/foros/showthread.php?t=60078)

maurogambo 19-09-2008 01:02:05

Problema con aplicacion multicapa
 
Hola:

Estoy implementando una aplicacion multicapa con Delphi 2007. Bien, hasta ahora he hecho lo siguiente:

1. Primero, diseñé un servidor de aplicaciones DCOM, creando una aplicación VCL y utilizando el Modulo de Datos Remoto (Remote Data Module) con la idea de ejecutarlo en una maquina remota que será utilizada como servidor. Utilicé los componentes de la paleta Interbase para conectar con una base de datos Firebird 2.0, que se encuentra en la misma maquina servidora, lo cual se realizó sin ningún problema. (Componentes utilizados: TIBDatabase, TIBTransaction, TIBQuery y TDataSetProvider).

2. A continuación, creé la aplicación cliente con los componentes TClientDataSet y TDCOMConnection y los vinculé.

Ahora bien, para que TClientDataSet lea los datos del TDataSetProvider (que se encuentra en el servidor remoto), es necesario configurar el TDCOMConnection correctamente y definir las propiedades "ServerName" y "ServerGUID" (ésta última se obtiene automáticamente al configurar la primera). Pues bien, según he leido en la ayuda de Delphi, es requisito indispensable registrar la aplicacion servidor en Windows, para que el cliente pueda conectarse correctamente. En versiones anteriores a Delphi 2007, la aplicación se registraba en la computadora local cuando se corría en programa, en cambio, ahora, la aplicacion solo se registra cuando se coloca como parámetro '/regserver'.

Como prueba, registré la aplicacion servidora en la misma computadora donde corrí el programa cliente, el cual se conectó sin inconvenientes.

El problema se presenta cuando instalo el servidor de aplicaciones DCOM en la máquina remota donde esta la base de datos FireBird. El servidor funciona perfectamente, sin embargo, cuando intento conectar elcliente desde otra computadora me aparece el siguiente error en la aplicacion cliente: 'El servicio RCP no esta disponible'. En la propiedad 'ComputerName' del componente TDCOMConnection he puesto el nombre de la máquina remota.

Yo creo que el error se debe a que el servidor DCOM no esta registrado correctamente en la máquina cliente, pues la ayuda de Delphi dice exactamente lo siguiente (traducido):

Cita:

TDCOMConnection utiliza DCOM para establecer la conexión inicial entre la aplicación cliente y un servidor de aplicaciones remotas. Para ello, el servidor de aplicaciones debe estar registrado en la máquina cliente.


Quisiera que alguien me dijera cómo se registra un servicio remoto en una maquina windows (XP/Vista), o me indicaran otra solucion al problema.

Si me pueden ayudar se los agradecería.

Kipow 19-09-2008 14:41:32

Me imagino que igual a como lo registraste en la pc local con

Regsvr32 <ruta y nombredelejecutable>

maurogambo 19-09-2008 15:16:06

Ya lo he probado antes y ambos procedimientos dan error:

Código:

regsvr32 //SERVIDOR\Servidor.exe 
regsvr32 //SERVIDOR\Servidor.TLB

Si registro el servidor como parametro el cliente da error (Servicio RPC no disponible):

Código:

//SERVIDOR\Servidor.exe  /regsrver
... Ya no me quedan ideas ...

Andreano 19-09-2008 15:17:54

Mauro,

El nuevo DataSnap en Delphi 2009 no necesita COM. en esta liga tienes un ejemplo de aplicacion DataSnap con Delphi 2000 http://cc.codegear.com/Author/38483

Saludos,
Andreano Lanusse
Embarcadero Technologies

elopezf 19-09-2008 17:09:05

Saludos a todos.

Lo que te recomiendo es que veas los que son derechos de usuarios en el servidor.

1.- En el servidor te vas a Herramientas Administrativas
de ahi seleccionas
Servicios de componentes

Te muestra una nueva pantalla

Servicios de Componentes --> Equipos --> Mi PC -- Configuracion DCOM

Buscas el nombre de tu aplicacion o tu aplicacion servidora

Seleccionas y das click con boton derecho y Propiedades

Te aparece una pantalla seleccionas la pestanya Seguridad

Y personalidad en Permisos de Incio y Activacion agregando el grupo de usuario que quieres que tengan acceso o al usuario

Luego personalizas tambien en Permisos de Acceso de la misma forma que hiciste en el paso anterior

En estas personalizaciones marcas las casillas dandole activacion y ejecucion y acceso tanto local como remoto.

Cuando hayas terminado das aplicar y aceptar y luego prueba tu aplicacion

Espero te sirva


Ernesto Lopez

Kipow 19-09-2008 18:15:24

Cita:

Empezado por maurogambo (Mensaje 315163)
Ya lo he probado antes y ambos procedimientos dan error:

Código:

regsvr32 //SERVIDOR\Servidor.exe 
regsvr32 //SERVIDOR\Servidor.TLB

Si registro el servidor como parametro el cliente da error (Servicio RPC no disponible):

Código:

//SERVIDOR\Servidor.exe  /regsrver
... Ya no me quedan ideas ...

El registro debe de ser en el servidor no en los clientes.

maurogambo 21-09-2008 12:34:14

Registro
 
Cita:

Empezado por Kipow (Mensaje 315215)
El registro debe de ser en el servidor no en los clientes.

Pero la ayuda en delphi 2007 señala que el servidor de aplicaciones debe estar registrado en la máquina cliente para se establezca la comunicación.

Gracias.

mamcx 21-09-2008 22:59:34

Te recomiendo que no sigas la ruta de COM. Es muy complicada y es un lio a la hor de despliegue.

Mejor usa protocolos simples y estandares , como http y tcp-ip


La franja horaria es GMT +2. Ahora son las 00:39:05.

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