关于delphi:在服务应用程序中使用数据模块

Use a Datamodule in a Service Application

我编写了Win32 App进行测试和调试。我已经创建了一个数据模块,该模块具有运行TCP套接字和IBDatabase组件所需的所有功能。

在Win32应用程序环境中成功测试了数据模块之后,我试图将数据模块连接到我创建的服务应用程序模板中,但使它无法运行。

有人可以指出这种使用带有封装主要服务功能的组件功能的数据模块的策略是否可行,并给出一个简单的模板示例,说明如何将其连接起来吗?


您必须在服务启动事件中创建并初始化数据模块。请注意,数据模块不应打开对话框或类似内容,否则将挂起,等待永远不会出现的输入(有多种方法可以使服务与用户桌面进行通信,但是良好的服务应避免使用它们)。
但是,如果不看代码,很难说出问题所在。


正如其他人所提到的,是的,这绝对是可能的。对于我的实现,实际上我只是在Project Options中将数据模块设置为自动创建。然后我的服务代码重量很轻,可以归结为:

1
2
3
4
5
6
7
8
9
10
procedure TMyService.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Started := myDataModule.Startup;
end;

procedure TMyService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  myDataModule.Cleanup;
  Stopped := True;
end;

是的,您可以在Service Application中使用DataModule。
这正是我们的中间层应用服务器所拥有的。