DB, sessioni e persistenza con Intraweb 12 in Delphi XE2
-
27-10-2019 - |
Domanda
Sto cercando informazioni sulla connettività del database (Firebird nel mio caso) con applicazioni Intraweb.
Devo in particolare conoscere le differenze coinvolte nell'uso del database sul TDataModule con la funzione LockDataModule o l'utilizzo del database sull'UnseSessionSUnit. Ad esempio, devo disporre del database totalmente se nessun utente utilizza il server e al massimo 30 utenti saranno connessi.
Potrei nel peggiore dei casi di connettermi ad un vecchio database Paradox e ho bisogno di una struttura che possa gestirlo (so che dovrò generare una cartella basata su WebApplication.Appid per gestire le sessioni). Al peggio...
Grazie in anticipo per qualsiasi informazione o link utili potresti fornirmi ^^
Soluzione
Scenario 1: lasci "Connessioni di dati del pool" incontrollato nella procedura guidata per l'intrawebing
In questo scenario il mago crea a ServerController
, un UserSession
ma non a DataModule
. Posiziona i componenti del database, della sessione e del set di dati su UserSession
.
Ogni volta che un nuovo utente si collega al tuo sito Web una nuova istanza del UserSession
viene creato e viene effettuata una connessione al database. Quando il ServerController.SessionTimeOut
scade a causa dell'inattività dell'utente il UserSession
viene distrutto e quella particolare connessione al database viene interrotta.
Per 30 utenti simultanei questo modello andrà probabilmente bene per te e dovrebbe garantire che tutte le connessioni del database verranno recisi quando il sito Web non è in uso.
Scenario 2 - tu dai un'occhiata "Collegamenti dati del pool" nella procedura guidata dell'applicazione Intraweb
Così come il ServerController
e il UserSession
Il mago creerà un vuoto DataModule
. Posiziona i componenti del database, della sessione e del set di dati su DataModule
.
Il ServerModule
ha un TIWDataModulePool
componente su di esso che ha PoolCount
proprietà.
Quando l'applicazione inizia, crea PoolCount
istanze del DataModule
ognuno dei quali effettua una connessione al database. Poiché le tue pagine richiedono l'accesso al database, chiamano LockDataModule
e UnlockDataModule
per utilizzare temporaneamente uno dei DataModule
istanze dalla piscina.
Quando l'applicazione chiude il DataModule
Le istanze nel pool vengono distrutte e le loro connessioni al database sono chiuse.
Questo modello è appropriato quando si dispone di una connessione di database aperta per utente supererebbe le capacità del server di database. Per solo 30 utenti che si collegano a un database Firebird non credo che sarebbe necessario.
Altri suggerimenti
Potresti prendere in considerazione l'uso di un set di componenti come kbmmw di http://www.components4programmers.com/ L'ho usato per anni con le app desktop Ans ora con le app IW. Distribuisco le mie app come servizi e attualmente ho alcuni problemi che distribuiscono come ISAPI. KBMMW è adatto per un'app con molte connessioni in quanto offre un pool di connessioni ecc ... Ha molte funzionalità e vantaggi. Dai un'occhiata al sito da solo.
Uso la versione aziendale, anche se penso che la versione gratuita possa esserti utile.
Saluti!
-Lou