Как мне спроектировать программу tcp server, чтобы `IHostedService` общался друг с другом? - PullRequest
0 голосов
/ 06 июня 2019

Я переписываю программу сервера tcp в ядре .net. У меня трудности с реализацией моего дизайна.

Сервер имеет три основные функции / службы:

  • услуга 1. принимать и управлять клиентскими подключениями
  • услуга 2. обрабатывать каждый вид клиентских сообщений и отправлять подтверждающее сообщение
  • сервис 3. Отслеживайте неактивных клиентов (клиентов, которые не отправляли сообщений какое-то время) и закрывайте эти соединения.

Я бы хотел, чтобы каждая из этих функций была посвящена IHostedService. Но я понятия не имею, как эти службы должны общаться друг с другом.

Эти сервисы зарегистрированы AddHostedService и, похоже, не могут быть введены.

И я не уверен, что это правильный способ предоставления открытых методов в размещенной службе другим пользователям для вызова.

Самый важный вопрос, который я нашел, это этот .

В моей ситуации это означает, что я должен зарегистрировать одну посредническую службу для каждой из трех служб. Это не кажется чистым способом, потому что эти посредники предназначены только для общения, без смысловых значений ...

Я бы хотел знать, является ли посредник единственным подходом, или мой дизайн совершенно неверный?

1 Ответ

0 голосов
/ 06 июня 2019

Это действительно зависит от стратегии.Каждый размещенный сервис может принимать конфигурацию как часть своих зависимостей для связи.Однако привязка порта TCP должна быть уникальной.

В предыдущей жизни я написал службу UDP, которая транслировала и какие службы TCP были доступны для связи и опосредовала эти службы в настройках чата.UDP - это более широкая сеть, тогда как TCP - это специфическая адресация.

Если бы вы использовали только TCP, без конфигурации этим службам нужно было бы знать, кто является посредником и по какому адресу его достичь.

...