我编写了我的 Win32 应用程序来测试和调试。我创建了一个具有运行 TCP 套接字和 IBDatabase 组件所需的所有功能的数据模块。
在 Win32 应用程序环境中成功测试 Datamodule 后,我试图将 Datamodule 挂接到我创建的服务应用程序模板中,但我无法让它运行。
有人可以指出这种使用封装主要服务功能的组件功能的数据模块的策略是否可行,并给出一个简单的模板示例来说明如何连接它?
我编写了我的 Win32 应用程序来测试和调试。我创建了一个具有运行 TCP 套接字和 IBDatabase 组件所需的所有功能的数据模块。
在 Win32 应用程序环境中成功测试 Datamodule 后,我试图将 Datamodule 挂接到我创建的服务应用程序模板中,但我无法让它运行。
有人可以指出这种使用封装主要服务功能的组件功能的数据模块的策略是否可行,并给出一个简单的模板示例来说明如何连接它?
您必须在服务启动事件中创建并初始化您的数据模块。注意数据模块不应该打开对话框或类似的东西,否则它将挂起等待永远不会出现的输入(有一些方法可以让服务与用户桌面通信,但一个好的服务应该避免它们)。但是如果不查看您的代码,就很难说出了什么问题。
正如其他人所提到的,是的,这绝对是可能的。对于我的实现,我实际上只是将我的数据模块设置为在项目选项中自动创建。然后我的服务代码很轻,归结为:
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;
是的,您可以让 DataModule 在服务应用程序中工作。
这正是我们的中间层应用服务器所拥有的。