场景 1 - 您在 Intraweb 应用程序向导中未选中“池数据连接”
在这种情况下,向导会创建 a ServerController
, aUserSession
但不是 a DataModule
。您将数据库、会话和数据集组件放在UserSession
.
每当新用户连接到您的网站时,都会创建一个新实例UserSession
并建立与数据库的连接。当ServerController.SessionTimeOut
由于用户不活动而到期时,将UserSession
被破坏,并且与数据库的特定连接被切断。
对于 30 个并发用户,此模型可能适合您,并且应该保证在网站不使用时所有数据库连接都将被切断。
场景 2 - 您在 Intraweb 应用程序向导中选中“池数据连接”
以及向导会创建一个空ServerController
的. 您将数据库、会话和数据集组件放在.UserSession
DataModule
DataModule
ServerModule
上面有一个TIWDataModulePool
具有PoolCount
属性的组件。
当您的应用程序启动时,它会创建每个与数据库建立连接的PoolCount
实例。DataModule
由于您的页面需要访问数据库,因此它们调用LockDataModule
并UnlockDataModule
临时使用DataModule
池中的一个实例。
当您的应用程序关闭DataModule
时,池中的实例将被销毁,并且它们与数据库的连接也将关闭。
当每个用户的开放数据库连接超出您的数据库服务器的能力时,此模型是合适的。对于只有 30 个连接到 FireBird 数据库的用户,我认为不需要它。