4

我正在使用 IntraWeb Applications 搜索有关数据库连接(在我的情况下为 Firebird)的信息。

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

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

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

4

2 回答 2

6

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

在这种情况下,向导会创建 a ServerController, aUserSession但不是 a DataModule。您将数据库、会话和数据集组件放在UserSession.

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

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

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

以及向导会创建一个空ServerController的. 您将数据库、会话和数据集组件放在.UserSessionDataModuleDataModule

ServerModule上面有一个TIWDataModulePool具有PoolCount属性的组件。

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

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

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

于 2012-01-12T22:25:32.623 回答
0

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

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

干杯!

-娄

于 2012-06-26T16:12:42.513 回答