Delphi Indy 10 HTTPServer 将数据库实例绑定到会话

Delphi Indy 10 HTTPServer bind database instance to session

是否有将数据库连接实例绑定到 INDY HTTP Server 会话的最佳实践?

我将常用的会话数据存储在 ARequestInfo.Session.Content.Values 中,但这仅适用于字符串。我当前的数据库对象方法是(TDatabase只是一个例子class):

我怀疑我的方法是开销很大的,而且有更优雅的方法可以实现我想要的。如果是这种情况 - 非常欢迎提示。

Session.Content 属性 是一个 TStrings,它可以容纳字符串和 TObject 指针。您不需要单独的 TDictionary 来将字符串映射到对象,您可以将它们一起存储在 Content 本身中。

或者,您可以从 TIdHTTPSession 派生一个新的 class,将您的数据库连接添加到 class,然后使用 TIdHTTPServer.OnCreateSession 事件创建实例class。然后,要访问数据库连接,只需将任何 TIdHTTPSession 对象类型转换为您的 class 类型。