我应该如何设计我的 tcp 服务器程序以使“IHostedService”相互通信

How should I design my tcp server program to make `IHostedService`s communicate with each other

我正在用 .net 核心重写一个 tcp 服务器程序。 我在实施我的设计时遇到困难。

服务器有3个基本functions/services:

我想在专用 IHostedService 上使用这些功能中的每一个。 但我不知道这些服务应该如何相互通信。

这些服务是由AddHostedService注册的,似乎无法注入。

而且我不确定在托管服务上公开 public 方法以供其他人调用是否是正确的方法。

我发现的最相关的 SO 问题是

在我的情况下,这意味着我应该为三个服务中的每一个注册一个中介服务。这似乎不是一个干净的方式,因为这些中介只是为了交流,没有语义......

我想知道调解器是否是唯一的方法, 还是我的设计完全不正确?

这真的取决于策略。每个托管服务都可以将配置作为其通信依赖项的一部分。但是,TCP 端口绑定需要是唯一的。

在以前的生活中,我编写了一个 UDP 服务来广播,哪些 TCP 服务可用于通信,并在聊天室设置中调解这些服务。 UDP 更像是一个广泛的网络,而 TCP 是特定寻址。

如果您只使用 TCP,在没有配置的情况下,这些服务将需要知道谁是中介者以及到达它的地址。