Сокеты Silverlight или запросы к базе данных?
-
23-08-2019 - |
Вопрос
В настоящее время я пишу пошаговую онлайн-ролевую игру для выполнения задания.В игре игроки могут общаться друг с другом и отправлять свои действия после завершения хода.Как лучше всего позаботиться об обмене данными между игроками.Сокеты или хранение всей информации в базе данных и программа периодически делает запросы на проверку наличия обновлений?Если нет лучшего подхода.
Обратите внимание, что игра задумана как широкомасштабная, т. е. множество игроков будут одновременно играть в несколько игр на одном сервере, поэтому я должен стараться быть максимально эффективным.
Решение
В Silverlight вы можете подключиться обратно только к хосту, который обслуживает приложение Silverlight, поэтому сокеты клиент-клиент исключаются.Все в вашей игре (включая чат) должно проходить через сервер.
Windows Communication Foundation (WCF) очень удобно работать в Silverlight2.Пошаговая игра упрощает задачу, поскольку означает, что вам не нужно поддерживать одно и то же состояние игры между игроками в реальном времени (т. е.:не стремясь к максимальной задержке 100 мс).
Другие советы
Используйте WCF, если это возможно.
Есть две основные возможности.Вы можете применить Розетки связи или вы можете использовать Дуплекс WCF.Вот компромиссы:
Сокеты => лучшая производительность при меньшей производительности
Дуплекс WCF => худшая производительность, но более высокая производительность
В сети есть несколько отличных примеров для обоих сценариев, но если вы решите использовать решение WCF, вот некоторые ресурсы:
А очень хороший урок Питер МакДжи.
Информация о дуплекс WCF от msdn.