Java TCP Server-клиент дизайнерское решение - PullRequest
0 голосов
/ 21 сентября 2011

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

Какие шаблоны (если таковые имеются) существуют для решений TCP Java? Я буду отправлять много сериализованных объектов по сети, как мне обрабатывать различные запросы / объекты? На самом деле, как мне обработать сам запрос? Обертываю ли я каждый объект, который отправляю, внутри другого объекта, а затем, когда объект прибывает, я анализирую его на предмет «команда / запрос», а затем соответствующим образом обрабатываю объект, содержащийся внутри? Именно с этим общим замыслом я борюсь.

Все онлайн-уроки кажутся стандартными, эхо-серверами, которые отправляют обратно текст, отправленный клиентом. Они полезны только при изучении реальных сокетов, но бесполезны при применении к реальной ситуации. Множество примеров из практики и если утверждения просто кажутся плохим развитием. Есть идеи? Я бы предпочел не использовать фреймворк на этом этапе.

Приветствия

Тим.

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011

Рассмотрите возможность использования протокола более высокого уровня, чем TCP / IP, не изобретайте колесо. rmi хороший вариант, и вы сможете найти хорошие учебники по нему.

1 голос
/ 21 сентября 2011

Я предлагаю вам либо использовать RMI, либо рассмотреть его более подробно, чтобы вы могли определить, как бы вы поступили по-другому.Как минимум, я предлагаю вам поиграть с RMI, чтобы увидеть, как он работает, прежде чем пытаться сделать это самостоятельно.

0 голосов
/ 21 сентября 2011

Если высокая производительность и низкая задержка не являются основными требованиями, просто используйте существующие решения. И если вы решите использовать rmi, чем рассмотреть возможность использования J2EE с EJB - это обеспечит вам управление транзакциями поверх rmi.

В противном случае, если вам нужна чрезвычайно низкая задержка, взгляните на источники существующих решений, которые используют пользовательские протоколы поверх tcp. Например, OpenChord отправляет сериализованные объекты запросов и ответов, а Project Voldemort использует собственные сообщения для своих нескольких операций.

...