Задать вопрос
ArXen42
@ArXen42

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

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

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


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

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

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

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

Похожие вопросы