Обмен сообщениями: множество методов RemoteServices или уникальный построитель / интерпретатор сообщений? - PullRequest
1 голос
/ 17 октября 2010

Эй, ребята, Я использую GWT для написания простой многопользовательской настольной игры. И пока я кодировал, мне в голову пришёл вопрос:

Сначала я думал, что мой клиент может просто связаться с сервером через вызовы RemoteServices, поэтому, если клиент хочет подключиться к игре, он может сделать следующее:

  • joinGame (String playerName, String gameName)

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

Я подумал о другом способе: - создать класс сообщения и подклассифицировать его при необходимости. Таким образом, одного метода remoteService будет достаточно:

  • sendMessage (Сообщение m)

Построение и интерпретация сообщений тоже будут выполняться специализированными классами. Специально класс сборки может быть даже помещен в общий пакет gwt-app.


Это сказало: Я не вижу преимуществ того или другого. Таким образом, я не уверен , должен ли я поступить так или иначе или даже другим совершенно другим способом.

Один против другого, кто, по вашему мнению, лучше (имеет больше преимуществ в данной ситуации)?

РЕДАКТИРОВАТЬ: я забыл упомянуть, что один из факторов, который заставил меня задуматься о втором варианте (sendMessage), заключался в том, что в моем приложении есть CometServlet, который запрашивает игровые экземпляры, чтобы узнать, не отправлены ли сообщения клиент в своей собственной очереди сообщений (каждый клиент имеет очередь сообщений).

Ответы [ 2 ]

1 голос
/ 18 октября 2010

Я предпочитаю шаблон команды в этом случае (что-то вроде вашей sendMessage() концепции).

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

Проект gwt-dispatch является отличной структурой, которая переносит этот шаблон в GWT.

0 голосов
/ 17 октября 2010

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

Единственное преимущество, которое я вижу в обмене сообщениями, - это то, что он может быть немного более переносимым, если вы отойдете от среды Java RPC, но это будет довольно радикальный сдвиг.

...