PDA

Ver la Versión Completa : Apliación 3 Capas - MultiEmpresa


ceocarbajal
09-07-2004, 04:03:04
Hola a todos,

Estoy desarrollando una aplicación en Delphi 7, bajo 3 capas -tecnología Midas. En el servidor de base de datos utilizo Interbase, en el Servidor de Aplicación utilizo dbExpress para realizar la conexión y pues el Front-End, en Delphi. No puedo unir las bases de datos, debido a que en algunas tablas manejan bastante información, algo así como 1 millón de registros y no creo que sea viable.

Tengo varias bases de datos: Una base para La Empresa X, Otra para Y, y una de prueba. Mi duda es (quizás es una chorrada y no se si pueda hacer), ¿Como puedo decirle explicitamente desde el cliente Front-End, que se conecte a determinada base de datos/empresa, según la empresa a la que el usuario decida firmarse?, algo así como llamar un procedimiento SetRemoteConnectionName y esto establezca la propiedad SQLConnection.ConnectionName al valor indicado.

¿Se pueden hacer llamadas explicitas a procedimientos que se encuentran almacenados en el servidor de capa intermedia?, ¿como enfrenta Midas este tipo de casos?.

Tengo bastante experiencia desarrolando bajo Cliente/Servidor, pero esta cuestión sí que no he hayado como resolverla.

Desde ya agradezo a todos por vuestras sugerencias y comentarios.

Saludos a todos.

camelumi
16-07-2004, 22:39:29
No se si te pueda servir, pero usaria un archivo ini y al ingresar al sistema en la pantalla de usaurio y password (suponiendo que asi lo haces) agregario combo box con las empresas y al seleccionar y validar tu password almacenas el numero o id que le asignaste a la empresa o bien la ruta de la base de datos para la empresa x, y o prueba

Sds

pache
22-07-2004, 00:44:28
Además si usas dbExpress recuerda remitirte al archivo dbxconnections.ini para redireccionar la ruta de la base de datos al servidor o el directorio que corresponda.

Espero te sirva la sugerencia

ceocarbajal
31-07-2004, 02:39:47
Hola a todos,

Agradezco los comentarios que han hecho, así como su tiempo en leer el mensaje. Creo las sugerencias van bien para tecnología Cliente / Servidor, aunque se podría retomar algo para multiples capas.

Casí despues de postear este mensaje y despues de mucho buscar me encontre con la respuesta en esta página

How to execute stored procedure in client when use MIDAS (http://www.delphi3000.com/articles/article_731.asp)

Básicamente describe un proceso a tres pasos:
1 Agregar un procedimiento a la Interfaz (Servidor de Aplicación)

procedure ExecProc(Params: Integer);

2 Escribir el código para el procedimiento en el Remote Data Module (Servidor de Aplicación)
procedure ExecProc(Params: Integer);
begin
StoredProc1.ParamByName('@Param').AsInteger := Params;
StoredProc1.ExecProc;
end;

3 En el cliente, hacer una llamada al servidor de aplicación, como la siguiente:
DComConnection1.AppServer.ExecProc(1);

Esto es bastante sencillo y funciona muy bien. Despues, dada la magnitud del proyecto, decidí crear Remote Data Modules Childs, por aquello de la división del código y la pregunta ahora fue "¿Como ejecutar un procedimiento remoto que se encuentra en un RDM Child desde el Cliente?"

Igual, realice los dos primeros pasos del proceso anterior en el RDM Child y en el punto 3 (la llamada desde el cliente al servidor de aplicación) fue:

SharedConnection.AppServer.MiProcedimiento (Param1, Param2),

Donde SharedConnection, es precisamente un componente TSharedConnection, cuya propiedad ChildName := RDMChild....

Agradezco nuevamente sus comentarios y espero que esta información le sirva a alguien más. ;)

Un Saludo.

Alonso
Guadalajara, México