Сокеты Silverlight или запросы к базе данных?

StackOverflow https://stackoverflow.com/questions/543100

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Windows Communication Foundation (WCF) очень удобно работать в Silverlight2.Пошаговая игра упрощает задачу, поскольку означает, что вам не нужно поддерживать одно и то же состояние игры между игроками в реальном времени (т. е.:не стремясь к максимальной задержке 100 мс).

Другие советы

Используйте WCF, если это возможно.

Есть две основные возможности.Вы можете применить Розетки связи или вы можете использовать Дуплекс WCF.Вот компромиссы:

Сокеты => лучшая производительность при меньшей производительности
Дуплекс WCF => худшая производительность, но более высокая производительность

В сети есть несколько отличных примеров для обоих сценариев, но если вы решите использовать решение WCF, вот некоторые ресурсы:

А очень хороший урок Питер МакДжи.
Информация о дуплекс WCF от msdn.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top