1

我有一个 asp.net 核心应用程序“A”,它每 1 分钟在一个文件夹中生成文件。

应用程序“B”想要一个通知或文件详细信息我们生成了什么文件以及该文件的一些哈希信息。基于此通知,应用程序“B”想要处理文件。

我正在考虑一些发布/订阅机制,我想要非常轻量级的组件,其中应用程序“A”将发布文件相关信息,应用程序“B”将订阅和收听。

“system.threading.channels”会解决这个问题吗?

4

1 回答 1

4

短版:没有。

System.Threading.Channels正在进行中 -Queue<T>在许多方面非常相似,但设计用于async访问;该 API 的任何部分都不允许 IPC。

有很多方法可以实现这个跨进程(并且可能是跨机器),但可以想到的选项是:

  • 让其中一个节点设置套接字服务器,并让另一个节点通过套接字连接;以这种方式互相发送消息
  • 相同,但使用命名管道而不是套接字
  • 相同,但使用 http 服务器;kestrel 很容易设置为服务器
  • 使用外部消息代理或管道作为中介,并让两个节点作为客户端连接到它
  • 只检测文件系统的变化
于 2020-11-25T13:11:20.723 回答