我有一个asp.net核心应用程序"A";其在文件夹中每1分钟生成一个文件。
应用程序";B";想要一个通知或文件,详细说明我们生成的文件以及该文件的一些哈希信息。基于该通知;B";想要处理这些文件。
我正在考虑一些发布/订阅机制,并且我想要重量非常轻的组件;A";将公布文件相关信息;B";将订阅并收听。
是";system.threading.channels";会解决这个问题吗?
短版本:无
System.Threading.Channels
是进程内的-在许多方面与Queue<T>
非常相似,但专为async
访问而设计;API的任何部分都不允许IPC。
有很多方法可以实现这种跨流程(以及潜在的跨机器(,但脑海中浮现的选项是:
- 让其中一个节点设置套接字服务器,并让另一个节点通过套接字连接;用这种方式互相发送信息
- 相同,但使用命名管道而不是套接字
- 相同,但有一个http服务器;kestrel很容易设置为服务器
- 使用外部消息代理或管道作为中介,并使两个节点都作为客户端连接到该代理
- 只检测文件系统的更改