DB, Sitzungen und Persistenz mit Intraweb 12 in Delphi XE2
-
27-10-2019 - |
Frage
Ich suche nach Informationen zur Datenbankkonnektivität (Firebird in meinem Fall) mit Intraweb -Anwendungen.
Ich muss insbesondere die Unterschiede kennen, die an der Verwendung der Datenbank im TDatamodule mit der LockDatamodule -Funktion oder der Datenbank auf der BenutzerSessionUnit beteiligt sind. Zum Beispiel muss die Datenbank vollständig getrennt werden, wenn keine Benutzer den Server verwenden, und höchstens 30 Benutzer werden verbunden.
Ich kann im schlimmsten Fall eine Verbindung zu einer alten Paradox -Datenbank herstellen, und ich benötige eine Struktur, die dies bewältigen könnte (ich weiß, dass ich einen Ordner basierend auf Webapplication.appid generieren muss, um Sitzungen zu verarbeiten). Schlimmstenfalls...
Vielen Dank im Voraus für alle Informationen oder nützlichen Links, die Sie mir zur Verfügung stellen können ^^
Lösung
Szenario 1 - Sie hinterlassen "Pooldatenanschlüsse" deaktiviert im Intraweb -Anwendungsassistenten
In diesem Szenario schafft der Zauberer a ServerController
, a UserSession
aber nicht a DataModule
. Sie platzieren Ihre Datenbank-, Sitzungs- und Datensatzkomponenten auf der UserSession
.
Immer wenn ein neuer Benutzer eine neue Instanz der Website herstellt UserSession
wird erstellt und eine Verbindung zur Datenbank erstellt. Wenn der ServerController.SessionTimeOut
läuft aufgrund der Inaktivität der Benutzer aus UserSession
wird zerstört und diese bestimmte Verbindung zur Datenbank wird abgetrennt.
Bei 30 gleichzeitigen Benutzern wird dieses Modell wahrscheinlich für Sie in Ordnung sein und sicherstellen, dass alle Datenbankverbindungen bei der Nutzung der Website abgetrennt werden.
Szenario 2 - Sie überprüfen "Pooldatenverbindungen" im Intraweb -Anwendungsassistenten
Ebenso wie ServerController
und die UserSession
Der Assistent erzeugt eine leere DataModule
. Sie platzieren Ihre Datenbank-, Sitzungs- und Datensatzkomponenten auf der DataModule
.
Das ServerModule
hat ein TIWDataModulePool
Komponente darauf, die hat PoolCount
Eigentum.
Wenn Ihre Bewerbung startet PoolCount
Beispiele der DataModule
Jedes davon stellt eine Verbindung zur Datenbank her. Da Ihre Seiten Datenbankzugriff erfordern, rufen sie auf LockDataModule
und UnlockDataModule
vorübergehend von einem der zu verwenden DataModule
Instanzen aus dem Pool.
Wenn Ihre Bewerbung die schließt DataModule
Instanzen im Pool werden zerstört und ihre Verbindungen zur Datenbank geschlossen.
Dieses Modell ist geeignet, wenn eine offene Datenbankverbindung pro Benutzer die Funktionen Ihres Datenbankservers überschreiten würde. Für nur 30 Benutzer, die sich mit einer Firebird -Datenbank verbinden, glaube ich nicht, dass dies erforderlich wäre.
Andere Tipps
Möglicherweise möchten Sie einen Komponentensatz wie KBMMW von in Betracht ziehen http://www.comPonents4programmers.com/ Ich habe das seit Jahren mit Desktop -Apps und jetzt mit IW -Apps verwendet. Ich stelle meine Apps als Dienste bereit und habe derzeit einige Probleme, die als ISAPI bereitgestellt werden. KBMMW eignet sich gut für eine App mit vielen Verbindungen, da sie Verbindungsbeschäftigung usw. bietet. Es bietet viele Funktionen und Vorteile. Schauen Sie sich Site selbst an.
Ich verwende die Enterprise -Version, obwohl die kostenlose Version für Sie nützlich ist.
Prost!
-Lou