进程间通信:命名管道或状态文件



我正在构建一个由Webservice组成的工具,它将在特定时间运行命令行工具。平均而言,将同时运行15-20个CL工具。每个CL工具的运行时间平均不超过0.5 -1分钟。web服务需要能够每2-3秒左右检查每个CL的状态。

我有一些关于如何做到这一点的建议;命名管道看起来是最好的"技术"解决方案。然而,我想知道,如果沟通与简单的非常小的文本"状态"文件将是一个更好的,不太复杂,更少的错误风险,方式。我更喜欢最节约资源的解决方案。

请建议。

命名管道会更好。当两个进程试图同时访问小文本文件时,您可能会遇到访问问题。

我以前做过类似的事情,下面是我所做的。

我通过设置ProcessStartInfo.RedirectStandardOutputtrue来启动命令行进程。然后我开始监听命令行进程的输出,执行:

process.OutputDataReceived += dataReceivedEventHandler;
process.BeginOutputReadLine();

然后在我的dataReceivedEventHandler中,我解析DataReceivedEventArgs.Data以查看我的控制台应用程序是否向我发送了一个以我创建的标记开始的"消息"(例如:"[ServerProgress]10")。

基本上,应用程序通过控制台输出进行通信。虽然不够优雅,但对我来说已经足够了。

对于您的情况,状态检查—占用空间不大,我愿意使用命名管道。

最新更新