.net windows服务如何相互交互?

.net windows服务如何相互交互?,.net,windows-services,.net,Windows Services,假设我有两个windows服务正在运行。一种服务是“轮询”——它轮询数据库中的打印作业。一旦找到新的打印作业,另一个服务-“打印”-必须将该作业发送到打印机 (为什么我不能使用一种服务是另一个问题,让我们说这是有原因的) 我有一个简单的解决方案想法,“轮询”服务创建打印作业并将其保存到某个文件中,而“打印”服务则监视该位置,读取文件并执行打印作业 有没有更好的方法可以做到这一点?是否可以直接从“轮询”服务调用“打印”功能 开发工具是.NET 3.5/C#如果这很重要的话。是的,您可以使用WCF来

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

(为什么我不能使用一种服务是另一个问题,让我们说这是有原因的)

我有一个简单的解决方案想法,“轮询”服务创建打印作业并将其保存到某个文件中,而“打印”服务则监视该位置,读取文件并执行打印作业

有没有更好的方法可以做到这一点?是否可以直接从“轮询”服务调用“打印”功能


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

是的,您可以使用WCF来允许服务彼此对话。NetNamedPipes绑定是本地同箱通信的一个好选择。

这是一个标准的IPC问题,有很多解决方案,就像给cat换肤一样:套接字、管道、文件、映射内存等


对于您的特定示例,听起来a可能是一个很好的解决方案。第一个服务可以将作业写入队列,第二个服务可以在方便时读取作业。这将解决诸如打印机忙、脱机等问题。

我同意,NetNamedPipeBinding是在您拥有WCF的情况下实现轻松进程间通信的一种方式。接受是因为它看起来简单易懂,而且我已经有一个小的工作示例在运行。是的,绝对正确-有很多方法可以做到这一点。他描述的FileSystemWatcher类()的使用就像队列一样。另一个选项是IPC的操作系统互斥,因为服务在同一个框中。性能高,但在数据传输方面不是很大。再加上文件删除,这可能就是问题所在。选择哪一个选项取决于您拥有的技能、您想要构建的技能、系统的未来演变,等等。性能不会成为问题。