【问题标题】:Raising and handling events in separate processes在不同的进程中引发和处理事件
【发布时间】:2016-03-20 10:47:45
【问题描述】:

这是我的问题的要点

  1. 进程 A 引发事件
  2. 可能在另一台机器上的进程 B,捕获事件并执行某些操作

.net 框架完全可以吗?我看过的每个示例都有事件生产者和消费者在同一台机器上的同一进程/应用程序中。有时它们在同一个线程中,有时它们在不同的线程中,但它们总是在同一台机器上的同一个进程中。

我可以通过使用套接字将事件从一个进程发送到另一个进程并在接收端引发事件的事件处理程序来实现所需的效果。这似乎是一种非常迂回的方法,因为我必须创建事件 ID、序列化/反序列化参数并使用大量套接字代码,这与我在 90 年代在 C 中所做的相同。

现在的问题是

如何使用 .net 框架事件机制将事件从一个进程发送到同一台机器上的另一个进程?

【问题讨论】:

    标签: c# events


    【解决方案1】:

    这听起来很像进程间通信 (IPC),其中存在多种机制,在非 Windows 系统中具有不同程度的支持。有 WCF、远程处理和内存映射 IPC,在我的脑海中。在实践中,我发现使用像 zeromq 这样的轻量级 pub sub 机制是最合适的解决方案。

    【讨论】:

    • 所以你的意思是没有用于处理跨进程事件的内置机制。我们必须使用 WCF 或某种形式的 IPC。这对我来说已经足够了。
    • 还有适用于 Windows 的事件跟踪 (ETW),但不确定交付保证等。可能也可以做到这一点,但其核心是具有更高级别 API 的 IPC。如果您觉得我的回答有用,您介意接受吗?
    猜你喜欢
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多