【发布时间】:2013-07-06 16:55:10
【问题描述】:
我有一个包含许多服务的类,这些服务基本上调用数据库连接(DBISAM 或通过 ZEOS)。
我正在让这个类在 web 服务中可用,比如使用 TidHTTPServer。我正在使用它的 OnCommandGet 事件并使用 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo 发出请求和结果。
我创建了一个 TObjectList 来保存与此服务类相关的每个客户端的实例。每次调用完成时都会创建和释放与数据库的连接,希望不会出现线程问题。
我想知道这是否是正确的方法。我没有使用来自 TidHTTPServer 的会话。在每个服务请求中,我都会在 TObjectList 上找到存储与该连接相关的信息的对象。
我查看了问题,但没有获得所需的所有信息。
但是我不确定安全性,特别是当许多电话可以同时发生时。我一直经常使用它,每次最多 1 个电话,因为很难同时测试多个连接。
我想知道这是否是正确的方法,或者如果不是,我如何实现一个“桥”来安全地调用我的类(我在这个类上创建了一个 QueryActivity,模仿 COM 查询样式)传递请求和返回参数。
德尔福 XE2 - Indy 10.5.8
【问题讨论】:
-
这与VCL无关
-
将所有内容封装在一个线程中
-
@JerryDodge 所有 TIdHttpServer 请求都在单独的线程中。无需将它们分开到另一个线程
-
@SirRufo 当然是的,但我的意思是所有业务逻辑和服务器中所做的处理 - 以及数据库连接,一切
-
@SirRufo 不知道这有什么关系,我说的只是将所有内容封装在自己的主线程中的基本概念,以便可以在 VCL 表单(测试)之间重复使用应用程序和一个 Windows 服务应用程序,也许还有一个 ISAPI 服务器。
标签: web-services delphi indy