Newsgroup: it.comp.lang.delphi
Titolo: condividere connessione database tra due processi (BPL?)

Buongiorno a tutti,
Ho la seguente domanda da porre:
Ho un'applicazione fatta in questo modo: menu.exe + programmi (ogni
programma ha un suo eseguibili)...es:
Programma1.exe...Programma2.exe...
Il menu' permette all'utente di scegliere quale programma
lanciare...quindi lancia il programma...(senza chiudere il menu.exe)...
Tutti questi programmi devono accedere ad un database.
Attualmente ogni programma fa la sua connessione al database (MS-SQL,
Interbase ecc...)
Vorrei capire se e' possibile fare questo: io vorrei aprire la
connessione al database direttamente nel Menu.exe...e poi fare in modo
che i vari programmi utilizzino quella connessione senza ricrearne una
nuova. (per aumentare la velocita'...ma anche perche' le licenze si
pagano "per connessione")
So che esista la possibilita' di condividere BPL in delphi. (runtime
packages)
Ho creato un package con la connessione che "lego" dinamicamente
(utilizzando l'opzione "Build with runtime packages..." dell'IDE)
Questo package l'ho "legato" al menu.exe...e anche a tutti i programmi
(sempre utilizzando "build with runtime packages...")
Pero' quando un programma viene lanciato (Es: programma1) come fa a
sapere che deve "condividere" la connessione con il programma
"menu.exe"?
Attualmente vedo che il programma continua a fare la propria
connessione , e non utilizza quella del menu.exe...
Non ho capito inoltre se devo chiamare "LoadPackage" oppure delphi fa
tutto da se'...
Se mi potete aiutare mi fate un grande piacere.
Saluti
A.M.

 Programma1.exe...Programma2.exe...
xche?
A.

Perche' e' un'applicazione vecchia e quando fu' progettata in questo
modo funzionava bene cosi'.
Il motivo per cui volevo cercare di condividere la connessione e'
perche' speravo di risolvere il problema col minore sforzo possibile
senza cioe' mettere mano a mille progetti uno per uno.
Saluti
A.M.
Alberto Salvati ha scritto:


 senza cioe' mettere mano a mille progetti uno per uno.
Gli eseguibili distinti non possono condividere la connessione e le
ragioni sono ovvie.  Le alternative sono: trasformi gli eseguibili in DLL
(opzione che comprende anche i BPL, quindi), oppure usi meccanismi di IPC
verso una terza applicazione che si connette ed opera con il DB (ma te lo
sconsiglio).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sconsiglio).
Ok. Diciamo che trasformo gli eseguibili in BPL.
Pero' da quello che ho capito io sui packages, mi pare di capire che
trasformare un progetto in un bpl non sia una cosa "meccanica" e
automatica. (quindi le modifiche da fare sono tantissime...si perde un
sacco di tempo)
Mi spiego...
Il menu' dovrebbe caricare (LoadPackage) il bpl del programma
selezionato dall'utente.
A questo punto pero' non c'e' un metodo tipo "Application.Run" che fa
tutto da se'...
ovvero: crea le form, stabilisce in che ordine vanno create...se devono
essere autocreate o create dinamicamente.
Quindi come faccio?
Mi devo creare una unit in ogni package in cui metto il codice per fare
tutte queste cose? Magari con un metodo "LanciaBPL" che simula
Application.run ?
Forse, visto il lavoro che dovrei fare, a questo punto mi converrebbe
passare ad un'applicazione "monolitica".
Saluti
A.M.

passare ad un'applicazione "monolitica".
Visto il lavoro che devi fare, avere un'applicazione monolitica o
averne una suddivisa in moduli è del tutto indifferente.