Изучаю концепцию акторов, пробую создать клиент-серверную игру. Начал с организации подключения/отключения игроков.
Для меня, на данный момент, очень привлекательно выглядит возможность прозрачной отправки сообщений между акторами сервера и акторами клиента, позволяющая и клиент, и сервер реализовать в рамках одной парадигмы и remoting технологии.
На клиенте имеется
ServerConnectionActor. Для соединения он отправляет
ConnectionRequest серверу, имеющему следующую структуру:
- PlayersManagerActor, которому и приходит этот запрос извне от клиента.
- На запрос он создает дочерний PlayerActor, который будет общаться с этим клиентом. Клиенту отправляет ответ с IActorRef на этот дочерний актор.
Таким образом, после установления соединения есть актор на стороне клиента и актор на стороне сервера, которые обмениваются сообщениями.
Вопрос в том, не угрожает ли это безопасности? К примеру клиентский актор может отправить PlayersManager какое-нибудь системное сообщение, например PoisonPill, что приведет к недоступности сервера.
Это в корне неправильный подход или вариант жизнеспособен после какой-либо доработки (закрытию остальных акторов от приема сообщений из внешней сети и т.д.)?
Использую Akka.NET и Unity3d, но вопрос скорее концептуальный и относится к akka в общем.