Создание многопользовательской серверной игры Java - разница между сокетами и веб-сервисом - PullRequest
0 голосов
/ 08 августа 2011

Я строю многопользовательскую карточную игру, используя Flex на стороне клиента и Java на стороне сервера, и я хотел знать, нужно ли мне использовать сокеты и метод accept для подключения пользователей к серверу, чтобы они могли присоединиться к игровой комнате или создать одну или пообщаться. В прошлом я узнал, как построить игровой сервер, обе стороны которого являются JAVA, а соединение было в сокетах, но сейчас клиентская сторона будет в FLEX, у которой мало способов подключения к серверу Java (XML, SOAP, BLAZEDS ( AMF)) и мне трудно понять, как написать Java-сервер, чтобы выполнять все функции игрового сервера, особенно управлять комнатами и отправлять данные пользователям. Таким образом, когда пользователь подключался к серверу и открыл комнату, эта комната была открыта в потоке, и кто когда-либо присоединился к этой комнате, затем он был подключен к той же теме и отправлял сообщения в нужное место. было легко, поэтому проблема в том, чтобы понять, как сделать то же самое с помощью SOAP или BLAZEDS. Любая помощь будет оценена. Спасибо.

Ответы [ 4 ]

1 голос
/ 08 августа 2011

Взгляните на RED5 и remoteSharedObjects. Используя эту технологию, вы можете поместить свой «игровой» объект в удаленный общий объект, и у всех клиентов будет один и тот же объект с обновлениями в реальном времени. Кроме того, вы можете использовать AMF (протокол, лежащий в основе BlazeDS) для ваших менее динамичных данных.

1 голос
/ 08 августа 2011

Пожалуйста, сделайте ваши вопросы краткими, трудно понять, о чем спрашивают.

Если вы спросите разницу между сокетом и веб-сервисом, сокеты используются для управления основными сетевыми коммуникациями. Кроме них, вы можете получать / отправлять байты в любом формате / протоколе, который вы выбрали.

SOAP / Webservices - это только один из таких форматов, его преимущество в том, что это стандартный способ кодирования сообщений, позволяющий легко писать код, который подключается к вашему сервису на большинстве платформ, и эти сообщения удобочитаемы. Основным недостатком является производительность как в полосе пропускания, так и в вычислительной мощности (особенно для анализа на приемном конце).

Если вы начинаете, я бы посоветовал разработать формат, связанный с приложением, которое вы используете для упрощения.

0 голосов
/ 08 августа 2011

Сокеты - это программный интерфейс для OSI Level 4 Transport Layer. Все используют их, то есть Webservices - это интерфейс уровня приложений уровня 7, который скрывает нижние уровни.

Если вам нужен двунаправленный обмен данными между вашим клиентом и сервером в режиме реального времени, вам лучше управлять своими собственными сокетами TCP. Flex по-прежнему поддерживает розетки.

0 голосов
/ 08 августа 2011

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

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

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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...