我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird)。
我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异。 例如,如果没有用户使用服务器,我需要完全断开数据库,最多连接30个用户。
我可能最糟糕的是必须连接到一些旧的paradox数据库,我需要一个可以处理它的结构(我知道我必须生成一个基于WebApplication.AppID来处理会话的文件夹)。最坏的情况......
提前感谢您提供给我的任何信息或有用的链接^^
答案 0 :(得分:5)
在此方案中,向导会创建ServerController
,UserSession
但不是DataModule
。您将数据库,会话和数据集组件放在UserSession
上。
每当新用户连接到您的网站时,都会创建UserSession
的新实例并建立与数据库的连接。当ServerController.SessionTimeOut
因用户不活动而到期时,UserSession
将被销毁,并且与数据库的特定连接将被切断。
对于30个并发用户,此模型可能适合您,并且应保证在不使用网站时将切断所有数据库连接。
除了ServerController
和UserSession
之外,向导还会创建一个空的DataModule
。您将数据库,会话和数据集组件放在DataModule
。
ServerModule
上有一个TIWDataModulePool
组件,其中包含PoolCount
属性。
当您的应用程序启动时,它会创建PoolCount
DataModule
个实例,每个实例都与数据库建立连接。由于您的网页需要数据库访问权限,因此他们会调用LockDataModule
和UnlockDataModule
来暂时使用池中的DataModule
个实例之一。
当您的应用程序关闭时,池中的DataModule
个实例将被销毁,并且它们与数据库的连接将被关闭。
当每个用户的开放数据库连接超出数据库服务器的功能时,此模型是合适的。对于连接到FireBird数据库的30个用户,我认为不需要它。
答案 1 :(得分:0)
您可能需要考虑使用http://www.components4programmers.com/之类的kbmMW组件集。我已经使用这个多年的桌面应用程序和现在的IW应用程序。我将我的应用程序部署为服务,目前有一些问题部署为ISAPI。 kbmMW非常适合具有大量连接的应用程序,因为它提供连接池等...它具有许多功能和优点。自己查看网站。
我使用企业版,但我认为免费版可能对您有用。
干杯!
-Lou