当前位置 : 主页 > 编程语言 > delphi >

Delphi XE2中的IntraWeb 12的数据库,会话和持久性

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird). 我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异
我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird).

我特别需要知道在带有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位用户,我认为不需要它.

网友评论