我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异.
例如,如果没有用户使用服务器,我需要将数据库完全断开连接,并且最多连接30个用户.
我可能最糟糕的是必须连接到一些旧的paradox数据库,我需要一个可以处理它的结构(我知道我必须生成一个基于WebApplication.AppID来处理会话的文件夹).最糟糕的是……
提前感谢您提供给我的任何信息或有用链接^^
方案1 – 您在Intraweb应用程序向导中未选中“池数据连接”在此方案中,向导将创建ServerController,UserSession但不是DataModule.您将数据库,会话和数据集组件放在UserSession上.
每当新用户连接到您的网站时,都会创建一个新的UserSession实例,并建立与数据库的连接.当ServerController.SessionTimeOut由于用户不活动而到期时,UserSession将被销毁,并且与数据库的特定连接将被切断.
对于30个并发用户,此模型可能适合您,并且应该保证在不使用网站时将切断所有数据库连接.
方案2 – 您在Intraweb应用程序向导中检查“池数据连接”
除了ServerController和UserSession之外,向导还将创建一个空的DataModule.您将数据库,会话和数据集组件放在DataModule上.
ServerModule上有一个TIWDataModulePool组件,它具有PoolCount属性.
当您的应用程序启动时,它会创建DataModule的PoolCount实例,每个实例都与数据库建立连接.由于您的页面需要数据库访问,因此它们会调用LockDataModule和UnlockDataModule来临时使用池中的一个DataModule实例.
当应用程序关闭时,池中的DataModule实例将被销毁,并且它们与数据库的连接将被关闭.
当每个用户的开放数据库连接超出数据库服务器的功能时,此模型是合适的.对于仅连接到FireBird数据库的30位用户,我认为不需要它.