我有一个通过Windows服务(vb.net)执行的工作进程。它每5分钟执行一次并检查数据库中的“作业”表。我还有一个Web应用程序(asp.net vb),允许用户在发生错误时“暂停”当前正在运行的作业。
Web应用程序通知Windows服务停止处理的最佳方式是什么?它们在同一台机器上运行,但是如果你有一个建议,如果它们在不同的机器上运行会很棒。
我想避免数据库或文件系统调用在每次迭代期间检查“状态”。
我有一个存储每个工作进程的自定义信息的数据库 - 如果可以通过.Net检索它,我可以存储一个线程ID或进程ID,以使Web应用程序能够向服务应用程序发送消息吗?
答案 0 :(得分:1)
您可能希望将服务作为WCF服务器。
然后,您可以通过网络应用或任何方便的地方与之进行通信。您还可以提供进度/反馈API以及命令/控制API - 这取决于您。
答案 1 :(得分:0)
在.Net Framework中有多种方法可以完成进程间通信。列举框架中可用的两个:
虽然第一个很简单但很旧,但新的方法应该是WCF。我建议你查阅Beginner's Guide to Windows Communication Foundation中的各种例子。
答案 2 :(得分:0)
您还可以使用依赖于系统信号量的named semaphore,允许您的流程实现生产者/消费者模式。