2010-05-24 59 views
2

我编写了我的Win32应用程序来测试和调试。我创建了一个具有运行TCP套接字和IBDatabase组件所需的全部功能的数据模块。在服务应用程序中使用数据模块

在Win32应用程序环境中成功测试Datamodule后,我试图将Datamodule挂接到我创建的服务应用程序模板中,但无法使其运行。

有人可能会指出是否使用Datamodule与组件功能封装主要服务功能的策略是可行的,并给出一个简单的模板示例如何将它连接起来?

回答

7

您必须在服务启动事件中创建并初始化您的datamodule。要小心数据模块不应该打开对话框或类似的东西,否则它将挂起等待永远不会到来的输入(有办法让服务与用户桌面通信,但良好的服务应该避免它们)。 但是不看你的代码,很难说出了什么问题。

1

是的,您可以在服务应用程序中使用DataModule。
这正是我们的中间层应用服务器。

+0

我可以把套接字服务器上吗? – 2010-05-24 17:28:32

+1

当然可以。您可以在其上放置任何非可视化组件。查看@ ldsandon的答案。 – 2010-05-24 18:29:23

+0

我们通过代码创建套接字... – 2010-05-24 18:29:33

2

正如其他人所说,是的,这是绝对有可能的。对于我的实现,我实际上只是将我的数据模块作为项目选项中的自动创建。然后我的服务代码是非常轻的重量和归结为这:

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;