我应该如何设计我的 tcp 服务器程序以使“IHostedService”相互通信
How should I design my tcp server program to make `IHostedService`s communicate with each other
我正在用 .net 核心重写一个 tcp 服务器程序。
我在实施我的设计时遇到困难。
服务器有3个基本functions/services:
- 服务 1. 接受和管理客户端连接
- 服务2.处理各种客户端消息并发送确认消息
- 服务 3. 跟踪非活动客户端(一段时间内未发送任何消息的客户端)并关闭这些连接。
我想在专用 IHostedService
上使用这些功能中的每一个。
但我不知道这些服务应该如何相互通信。
这些服务是由AddHostedService
注册的,似乎无法注入。
而且我不确定在托管服务上公开 public 方法以供其他人调用是否是正确的方法。
我发现的最相关的 SO 问题是 。
在我的情况下,这意味着我应该为三个服务中的每一个注册一个中介服务。这似乎不是一个干净的方式,因为这些中介只是为了交流,没有语义......
我想知道调解器是否是唯一的方法,
还是我的设计完全不正确?
这真的取决于策略。每个托管服务都可以将配置作为其通信依赖项的一部分。但是,TCP 端口绑定需要是唯一的。
在以前的生活中,我编写了一个 UDP 服务来广播,哪些 TCP 服务可用于通信,并在聊天室设置中调解这些服务。 UDP 更像是一个广泛的网络,而 TCP 是特定寻址。
如果您只使用 TCP,在没有配置的情况下,这些服务将需要知道谁是中介者以及到达它的地址。
我正在用 .net 核心重写一个 tcp 服务器程序。 我在实施我的设计时遇到困难。
服务器有3个基本functions/services:
- 服务 1. 接受和管理客户端连接
- 服务2.处理各种客户端消息并发送确认消息
- 服务 3. 跟踪非活动客户端(一段时间内未发送任何消息的客户端)并关闭这些连接。
我想在专用 IHostedService
上使用这些功能中的每一个。
但我不知道这些服务应该如何相互通信。
这些服务是由AddHostedService
注册的,似乎无法注入。
而且我不确定在托管服务上公开 public 方法以供其他人调用是否是正确的方法。
我发现的最相关的 SO 问题是
在我的情况下,这意味着我应该为三个服务中的每一个注册一个中介服务。这似乎不是一个干净的方式,因为这些中介只是为了交流,没有语义......
我想知道调解器是否是唯一的方法, 还是我的设计完全不正确?
这真的取决于策略。每个托管服务都可以将配置作为其通信依赖项的一部分。但是,TCP 端口绑定需要是唯一的。
在以前的生活中,我编写了一个 UDP 服务来广播,哪些 TCP 服务可用于通信,并在聊天室设置中调解这些服务。 UDP 更像是一个广泛的网络,而 TCP 是特定寻址。
如果您只使用 TCP,在没有配置的情况下,这些服务将需要知道谁是中介者以及到达它的地址。