Вот общий вопрос. Я не ищу лучшего ответа, я бы хотел, чтобы вы выразили свои любимые практики.
Я хочу реализовать сетевой протокол на Java (но это довольно общий вопрос, я столкнулся с теми же проблемами в С++), это не первый раз, как я это делал раньше. Но я думаю, что у меня отсутствует хороший способ его реализации. Фактически обычно это все об обмене текстовыми сообщениями и некоторыми байтовыми буферами между хостами, хранением статуса и ожиданием следующего сообщения. Проблема в том, что я обычно заканчиваю кучу коммутатора и более или менее сложным, если заявления, реагирующие на разные статусы/сообщения. Все это обычно становится сложным и трудным. Не говоря уже о том, что иногда что-то выходит, имеет какое-то "слепое пятно", я имею в виду статусы протокола, которые не были охвачены и которые ведут себя непредсказуемым образом. Я попытался записать некоторые классы состояний машины, которые заботятся о проверке статусов начала и конца для каждого действия более или менее умными способами. Это затрудняет программирование протокола, поскольку мне приходится писать строки и строки кода, чтобы охватить все возможные ситуации. То, что я хочу, - это что-то вроде хорошего шаблона или лучшей практики, которая используется в программировании сложных протоколов, проста в использовании и расширяется и очень читаема.
Каковы ваши предложения?