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

时间:2012-01-12 14:45:39

标签: delphi session delphi-xe2 intraweb

我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird)。

我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异。 例如,如果没有用户使用服务器,我需要完全断开数据库,最多连接30个用户。

我可能最糟糕的是必须连接到一些旧的paradox数据库,我需要一个可以处理它的结构(我知道我必须生成一个基于WebApplication.AppID来处理会话的文件夹)。最坏的情况......

提前感谢您提供给我的任何信息或有用的链接^^

2 个答案:

答案 0 :(得分:5)

场景1 - 您在Intraweb应用程序向导中保留“池数据连接”未选中

在此方案中,向导会创建ServerControllerUserSession但不是DataModule。您将数据库,会话和数据集组件放在UserSession上。

每当新用户连接到您的网站时,都会创建UserSession的新实例并建立与数据库的连接。当ServerController.SessionTimeOut因用户不活动而到期时,UserSession将被销毁,并且与数据库的特定连接将被切断。

对于30个并发用户,此模型可能适合您,并且应保证在不使用网站时将切断所有数据库连接。

方案2 - 您在Intraweb应用程序向导中检查“池数据连接”

除了ServerControllerUserSession之外,向导还会创建一个空的DataModule。您将数据库,会话和数据集组件放在DataModule

ServerModule上有一个TIWDataModulePool组件,其中包含PoolCount属性。

当您的应用程序启动时,它会创建PoolCount DataModule个实例,每个实例都与数据库建立连接。由于您的网页需要数据库访问权限,因此他们会调用LockDataModuleUnlockDataModule来暂时使用池中的DataModule个实例之一。

当您的应用程序关闭时,池中的DataModule个实例将被销毁,并且它们与数据库的连接将被关闭。

当每个用户的开放数据库连接超出数据库服务器的功能时,此模型是合适的。对于连接到FireBird数据库的30个用户,我认为不需要它。

答案 1 :(得分:0)

您可能需要考虑使用http://www.components4programmers.com/之类的kbmMW组件集。我已经使用这个多年的桌面应用程序和现在的IW应用程序。我将我的应用程序部署为服务,目前有一些问题部署为ISAPI。 kbmMW非常适合具有大量连接的应用程序,因为它提供连接池等...它具有许多功能和优点。自己查看网站。

我使用企业版,但我认为免费版可能对您有用。

干杯!

-Lou