gpt4 book ai didi

delphi - Delphi XE2 中的 IntraWeb 12 的数据库、 session 和持久性

转载 作者:行者123 更新时间:2023-12-03 15:26:01 25 4
gpt4 key购买 nike

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

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

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

预先感谢您可以向我提供的任何信息或有用的链接 ^^

最佳答案

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

在此场景中,向导将创建一个 ServerController、一个 UserSession,但不创建一个 DataModule。您将数据库、 session 和数据集组件放置在 UserSession 上。

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

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

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

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

ServerModule 上有一个 TIWDataModulePool 组件,该组件具有 PoolCount 属性。

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

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

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

关于delphi - Delphi XE2 中的 IntraWeb 12 的数据库、 session 和持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8836924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com