Допустимо ли в модели акторов использование акторов как на клиенте, так и на сервере (Akka .NET)?

Изучаю концепцию акторов, пробую создать клиент-серверную игру. Начал с организации подключения/отключения игроков.
Для меня, на данный момент, очень привлекательно выглядит возможность прозрачной отправки сообщений между акторами сервера и акторами клиента, позволяющая и клиент, и сервер реализовать в рамках одной парадигмы и remoting технологии.

На клиенте имеется ServerConnectionActor. Для соединения он отправляет ConnectionRequest серверу, имеющему следующую структуру:
  • PlayersManagerActor, которому и приходит этот запрос извне от клиента.
  • На запрос он создает дочерний PlayerActor, который будет общаться с этим клиентом. Клиенту отправляет ответ с IActorRef на этот дочерний актор.


Таким образом, после установления соединения есть актор на стороне клиента и актор на стороне сервера, которые обмениваются сообщениями.

Вопрос в том, не угрожает ли это безопасности? К примеру клиентский актор может отправить PlayersManager какое-нибудь системное сообщение, например PoisonPill, что приведет к недоступности сервера.
Это в корне неправильный подход или вариант жизнеспособен после какой-либо доработки (закрытию остальных акторов от приема сообщений из внешней сети и т.д.)?

Использую Akka.NET и Unity3d, но вопрос скорее концептуальный и относится к akka в общем.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
ArXen42
@ArXen42 Автор вопроса
Думаю, ответа ожидать дальше смысла нет, т.ч. отвечу себе сам тем, что удалось нагуглить (в целом, вопрос можно было бы и удалить, все есть в документации, но может кому пригодится):
  1. В любом случае, серверная ActorSystem должна быть закрыта для постороннего доступа.
  2. Соединение с ней напрямую это плохая практика, использовать IActorRef для взаимодействия с небезопасным клиентом нельзя.
  3. Соответственно, как вариант решения предлагается использование Akka.IO или любой другой более контроллируемый и безопасный способ сетевого взаимодействия с клиентом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Payment Systems Москва
от 160 000 до 200 000 руб.
Wallet One Чебоксары
от 90 000 до 150 000 руб.
Wallet One Москва
от 100 000 до 190 000 руб.