Windows服务如何相互交互?

时间:2009-09-01 01:42:14

标签: .net windows-services

假设我有两个Windows服务正在运行。一项服务是“轮询” - 它轮询数据库以查找打印作业。一旦找到新的打印作业,另一项服务 - “打印” - 必须将作业发送到打印机。

(为什么我不能用一项服务做一个单独的问题,让我们说这是有原因的。)

我所拥有的简单解决方案是“轮询”服务可以创建打印作业并将其保存到某个文件,并且“打印”服务可以监视该位置,读取文件并执行打印作业。

是否有更好的方法 - 是否有可能以某种方式直接从“轮询”服务调用“打印”功能?

如果重要的话,开发工具是.NET 3.5 / C#。

2 个答案:

答案 0 :(得分:4)

这是一个标准的IPC问题,并且有很多解决方案,因为有方法可以对猫进行换肤:套接字,管道,文件,映射内存等。

对于您的具体示例,听起来像message queue可能是一个很好的解决方案。第一个服务可以将作业写入队列,第二个服务可以在方便时读取它。这将解决打印机忙,离线等问题。

答案 1 :(得分:3)

是的,您可以使用WCF允许服务相互通信。 NetNamedPipes绑定是本地,同一盒通信的不错选择。