Собрать сервер для двунаправленной системы обратной связи между клиентом и сервером на Java? - PullRequest
2 голосов
/ 13 июня 2011

Сценарий: пользователь входит в клиентское программное обеспечение, которое формирует постоянное двунаправленное соединение с серверной сущностью (сервером), которая будет обрабатывать указанные пользователем задачи. Когда серверная сущность во время обработки пользовательской задачи обнаруживает ошибку или требует дальнейшего ввода данных пользователем, она уведомляет клиентское программное обеспечение и ждет, пока клиент решит, что делать. Клиентское программное обеспечение примет входные данные нового пользователя и отправит их на сервер. Серверная часть продолжается там, где она в последний раз остановилась, с вводом, указанным новым пользователем. Этот цикл обратной связи будет продолжаться до завершения обработки. Постепенно обновляемые пользовательские входные данные будут храниться на стороне сервера и быть доступными и изменяемыми из клиентского программного обеспечения. Поэтому, если клиент удаляет определенный вход, это изменение будет немедленно отражено на стороне сервера. На стороне сервера, вероятно, требуется дополнительный интерфейс для маршрутизации клиентов разных пользователей на доступные аппаратные узлы (облако) для поддержки одновременных многопользовательских задач, выполняемых на стороне сервера.

На стороне клиента я подозреваю, что для подключения к серверу используются сокеты ...

Теперь что касается сервера, я немного растерялся, потому что, похоже, есть много разных Java-серверов, таких как Jetty & Netty. Я также практикую осторожность, чтобы не пытаться изобретать здесь какие-либо колеса.

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

Я также не просто ищу подходящее для всех решение (возможно, желаемое за действительное), но и открываюсь для любого понимания моей текущей ситуации.

1 Ответ

1 голос
/ 13 июня 2011

Netty предоставит многое из того, что вам нужно для этого, без необходимости заново изобретать сокет-сервер.Тем не менее, я хотел бы убедиться, что вам действительно нужно двунаправленное, в режиме реального времени связь между клиентом и сервером.Если вы можете переработать проблему таким образом, чтобы взаимодействие клиент-сервер не обязательно осуществлялось в режиме реального времени, то такие вещи, как веб-сервисы RESTful, становятся возможными и (по моему опыту) гораздо менее сложными и подвержены ошибкам.

...