powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Синхронизация Клиент(а/ов)
45 сообщений из 45, показаны все 2 страниц
Синхронизация Клиент(а/ов)
    #37045112
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Пришла идея создать браузерную игру после просмотра одного фильма.

Кратко об игры:
- люди заходят в комнату и ставят деньги на игроков;
- игроки становятся в круг, им раздаются патроны и пистолеты;
- по команде патроны заряжают в барабан пистолета, крутят барабан;
- потом звучит команда - "стрелять", люди стреляют;
- те кто не выбыл продолжают игру, выбывшие могут делать ставки;

так вот, как видно идея не сложна, но возникает вопрос:
как синхронизировать игроков перед и после момента "стрелять", ведь в комнату кто-то раньше зайдет кто-то позже, кто-то в одном часовом поясе сидит, кто-то в другом ?

п.с. Клиентом (мордой GUI) по сути может быть что угодно, это и сам браузер с HTML и Silverlight/Flash, проблема у всех одна, синхронизация игроков.

Взаимодействие Клиента и Сервера предполагает использование WCF WebService, т.е. никаких сокетов.

Высказывайтесь господа, нужна ваша помощь!
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045116
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Синхронизировать ничего не нужно - движок должен крутиться на сервере, а там время одно.
Смотрим сюда: 9509403
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045141
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

авторWcfTicketing\WcfTicketingService\WcfTicketingService.csproj' cannot be opened.

The project type is not supported by this installation.
что это за тип проекта ?

открываю на рабочем буке где стоит Visual Studio Web Developer 2010 Express
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045145
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft Visual Studio 2010 (Ultimate)

уТКаVisual Studio Web Developer 2010 Express
Выбросьте в мусорку.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045152
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУMicrosoft Visual Studio 2010 (Ultimate)

уТКаVisual Studio Web Developer 2010 Express
Выбросьте в мусорку.
мне на зарплату еле наскребают 10к рупи в месяц, а ты говоришь выброси...
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045154
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКамне на зарплату еле наскребают 10к рупи в месяц, а ты говоришь выброси...
Варианты:
Прекращаем строить из себя девственницу и качаем с торрентов

Создать новый солюшен в Visual Studio Web Developer 2010 Express и скопипастить классы

Забить на программирование, заняться земледелием
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045159
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

лежа на диване открывалось в Express версии.

запустил.

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

по сабжам из ссылки уже подумалось что речь пойдет о WCF Duplex, но нет, в проекте NetTCP - это пожалуй единственное чего я не глядел.

спасибо за наводку ;)
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045165
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаподумалось что речь пойдет о WCF Duplex, но нет, в проекте NetTCP - это пожалуй единственное чего я не глядел.
Да, дуплекс - это как альтернатива. Но, по мне красивее написать свой честный CallbackContract (ITicketCallBack в примере).
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045167
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

блин.
чего избегали, на то и напоролись.

главная причина по которой не хотелось использовать Сокеты - это ограниченное кол-во портов на которых может работать Клиент сначала хотелось на Сильверлайт реализовать.

Так вот, посмотрел чего там предлагает WCF NET.TCP - это те же самые сокеты только через wcf-сервисы.

есть другое предложение?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045174
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetTcpBinding

Заметкииспользуемая по умолчанию конфигурация для TCP быстрее при обмене сообщениями между конечными точками, чем конфигурация по умолчанию для привязок HTTP

<netTcpBinding>

maxConnectionsЦелое число, указывающее максимальное число входящих и исходящих подключений, которые будут созданы/приняты службой. Входящие и исходящие подключения считаются относительно отдельного предела, определенного этим атрибутом.
Входящие соединения сверх указанного предела помещаются в очередь и обрабатываются по мере освобождения ресурсов .
Исходящие соединения сверх указанного предела помещаются в очередь и обрабатываются по мере освобождения ресурсов .
Значение по умолчанию — 10.


listenBacklogПоложительное целое число, указывающее максимальное число каналов, ожидающих принятия прослушивателем. Соединения сверх этого лимита помещаются в очередь и обрабатываются по мере освобождения ресурсов. Атрибут connectionTimeout ограничивает время, в течение которого клиент ожидает установления соединения до создания исключения подключения. Значение по умолчанию — 10.

Так же читать про буферные пулы.

P.S. Какие к чёрту сокеты? Какое ограниченное кол-во портов?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045178
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там всё красиво и умное реализовано через пулы и очереди. Программисту не нужно понимать эту рутинную и сложную систему работы NetTcpBinding. Просто берём, конфигурим и работаем. А оно само там пулится и распихивается по очередям.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045182
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

то что можно конфигурировать пул - это хорошо.

я про другое - сам Сильвер ограничен по портам, через которые можно производить коммуникации.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045236
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКасам Сильвер ограничен по портам, через которые можно производить коммуникации.
Ссылка на документацию будет?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045290
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

да вот
выдержкаOne additional restriction on using the sockets classes is that the destination port range that a network application is allowed to connect to must be within the range of 4502-4534. These are the only destination ports allowed by a connection from a Silverlight application using sockets. If the target port is not within this port range, the attempt to connect will fail. It is possible for a target server to receive connections on a port from this restricted range and redirect it to a different port (a well-known port, for example) if this is needed to support a specific existing application protocol.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045311
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа, ок спасибо. Ну так а какие могут быть проблемы использования клиентами одного порта из указанного перечня? Все будут ломиться по одному порту, всё чинно и благородно.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045315
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУуТКа, ок спасибо. Ну так а какие могут быть проблемы использования клиентами одного порта из указанного перечня? Все будут ломиться по одному порту, всё чинно и благородно.

За одним маленьким "но" - в 90% случаев огнестенки просто пошлют все эти SL в далекое пешее путешествие.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045316
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну если пул не будет захлебываться и заботиться о нем действительно не нужно, то дай бог, земледелие отложу до худших времен :)
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045324
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 4-м SL есть сокеты без ограничения на номера портов

http://msdn.microsoft.com/ru-ru/library/system.net.sockets(v=vs.95).aspx

Плюс, поддержка многоадресной рассылки UDP.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045336
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

ну ну, для тех кто по англицки не понимает, выдержка отсюда :
выдержкаОдно дополнительное ограничение использования классов сокетов заключается в том, что диапазон целевого порта, к которому разрешено подключение сетевого приложения, должен находиться в пределах диапазона 4502-4534. Это единственные целевые порты, разрешенные подключением из приложения Silverlight с помощью сокетов. Если целевой порт не обнаружен в этом диапазоне портов, попытка подключения завершится неудачей. Целевой сервер может получать соединения по порту из этого ограниченного диапазона и перенаправлять их на другой порт (известный порт, например), если это необходимо для поддержки конкретного протокола существующего приложения.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045338
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

специально для тех, кто за буквами не видит текста. Ссылка та же.


авторВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов в пространстве имен System.Net.Sockets, включая новые классы UdpAnySourceMulticastClient и UdpSingleSourceMulticastClient без проверки политики. Доверенное приложение способно создавать TCP-подключение к любому порту любого узла, при этом файл политики междоменной связи не требуется. Целевой порт больше не должен находиться в диапазоне 4502-4534. Аналогичным образом доверенное приложение, использующее классы UdpAnySourceMulticastClient и UdpSingleSourceMulticastClient, может присоединиться к любой группе многоадресной рассылки через любой порт больший или равный 1024, при этом нет необходимости, чтобы ответчик авторизовал подключение. Чтобы воспользоваться преимуществами этих изменений не требуются дополнительные вызовы методов. Существующие методы не требуют проверок политики при запуске приложения вне браузера с повышенным уровнем доверия как доверенного приложения.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045355
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верблюд,

подними глаза выше и читай внимательно:
MSDNВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов...
где гарантия что пользователь захочет ставить/инсталлировать приложение?!

вот нашел пример со статьей по использованию Silverlight 4 + WCF NET.TCP
правда пришлось немного постараться чтобы заработало, но работает.
Модератор: уТКа и Верблюд, спокойнее!
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045361
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа
MSDNВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов...
где гарантия что пользователь захочет ставить/инсталлировать приложение?!

Как это коррелирует с тем, что целевой порт (в SL4) обязан находиться в диапазоне 4502-4534?


уТКа вот нашел пример со статьей по использованию Silverlight 4 + WCF NET.TCP
правда пришлось немного постараться чтобы заработало, но работает.
Чем этот пример лучше приведенного мною на чистых TCP коллбеках? Более того, я изначально писал и о дуплексе как варианте.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045363
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

О мой бог...

авторКак это коррелирует с тем, что целевой порт (в SL4) обязан находиться в диапазоне 4502-4534?
Доверенным (читать как Установленным) снимаются ограничения, тем что вы запускаете из браузера без предварительной установки доступ к сокетам есть, но с ограничениями по целевому порту.

авторЧем этот пример лучше приведенного мною на чистых TCP коллбеках? Более того, я изначально писал и о дуплексе как варианте.
Фишка в том что это так называемый "Self hosted" сервер в виде веб-приложения, откомпилили, закинули на хостинг и все, запускать ничего не нужно, просто работать как с wcf-сервисом.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045368
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаДоверенным (читать как Установленным) снимаются ограничения, тем что вы запускаете из браузера без предварительной установки доступ к сокетам есть, но с ограничениями по целевому порту.
Рузультат Application.Current.Install() будет являться гарантией? Жёсткий инсталл-таки, не дадим дальнейшего использования, пока результат не будет равен true.

уТКаФишка в том что это так называемый "Self hosted" сервер в виде веб-приложения, откомпилили, закинули на хостинг и все, запускать ничего не нужно, просто работать как с wcf-сервисом.
Хостить WCF можно как угодно, речь не об этом.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045369
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

сегодня WAS для себя открыл?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045374
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured,

видимо да, технологий-то море.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045378
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

традиционные сокеты как-то слишком сложно для меня - не потяну, забуксую и брошу, нужно что-то попроще, WCF NET.TCP как раз нормально.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045379
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКатрадиционные сокеты как-то слишком сложно для меня

но самое то для игр.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045507
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

если клиент сильвер, то я бы пожалуй выбрал PollingDuplex - специально разработан для браузерного соединения, в 4-ке весьма усовершенствован...
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045578
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

он весьма тормозной, да и не понятные ограничения по количеству соединений, не раз натыкался на жалобы людей.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045580
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

о тормозах пишут тут , как видно net.tcp намного производительнее
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045599
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

хм... там пишут о возможности увеличить производительность (в 4-ке появился NetTcpBinding для polling duplex):
Migration of client applications already utilizing HTTP polling duplex protocol to use net.tcp should require minimal changes in the application code. In practice, only the choice of the binding when creating a service proxy is affected. Similarly, a duplex WCF service already exposed over HTTP polling duplex endpoint will only require a new endpoint based on the NetTcpBinding from .NET Framework. This change can typically be done in configuration without modifying the service code.

а что, 900 клиентов (для http) при ежесекундном оповещении недостаточно? одновременных участников игры будет больше?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045611
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку.
В статье есть ссылка касательно масштабирования сервиса
Второе, трафик (http) можно уменьшить используя BinaryMessageEncodingBindingElement
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045616
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

никто не знает как оно будет, может поедет, а может топориком на дно океяна.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045629
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR, хорошо было бы живой солюшен наваять на HTTP дуплексе, приаттачить. Заинтересовался.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045654
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну так там же, в статьях Tomekа есть, вот из первой
http://janczuk.org/code/samples/PollingDuplexSample.zip

еще парочка (староватых, но не устаревших) ссылок:
Pushing Data to a Silverlight Client with a WCF Duplex Service
Silverlight 2 WCF Polling Duplex Support

ну и еще нагуглить несложно
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045706
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаникто не знает как оно будет, может поедет, а может топориком на дно океяна.
ну, так пилотный проект - на http polling duplex, а если "поедет" - либо масштабировать, либо переделать на net.tcp (сокеты или тот же polling duplex)?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045713
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, если по-надёжному: ASP.NET + AJAX (дергаем сервер по таймеру в js)
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045762
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ:
и тогда можно будет вернуться к вопросу заданному в первом посте...

LR:
да, думаю можно и так.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045811
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаМСУ: и тогда можно будет вернуться к вопросу заданному в первом посте...
... и тогда можно будет вернуть в ответу, написанному во втором посте - ничего синхронизировать не нужно.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045903
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

у нас видимо разное представление об игре.

Представляем мысленно:
- люди заходят в игру, вы зашли быстрее меня на секунду;
...
- звучит команда "стрелять"

у нас с вами Ajax скрипт дергает какой-то метод на ASP.NET, у вас на секунду раньше, у меня на секунду позже, но уже нужно "стрелять", и на "стрелять" отведен промежуток к примеру 2 секунды, так вот, вы сделаете выстрел, а я не уверен что успею - еще раз, как вы будете синхронизировать?
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045971
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа, О мой бог...

Да не в синхронизации дело, а в периодичности запросов на сервер. Выставьте клиентскому таймеру минимальное значение и ожидайте "ответа".
Во-вторых, на сервере не мешало бы сделать искуственную задержку для сбора результатов (чтобы все клиенты "успели" среагировать).
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045994
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну тогда и придумывать тут нечего, берем простой WCF и дергаем по заданному интервалу из Сервелата, аналогично из других Клиентов.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37045999
о мой бох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУДа не в синхронизации дело, а в периодичности запросов на сервер. Выставьте клиентскому таймеру минимальное значение и ожидайте "ответа".Глупость. Синхронизация состояния участников в сетевых играх необходима. В противном случае это будут сферические кони-наблюдатели в вакууме без возможности взаимодействовать с другими участниками (хоть посредством сервера, хоть напрямую друг с другом - вот это как раз не так уж важно).

МСУВо-вторых, на сервере не мешало бы сделать искуственную задержку для сбора результатов (чтобы все клиенты "успели" среагировать).Ржу-не-могу. МСУ, ты и в сетевых играх гурой уже стал? Не пиши ерунды, ты в этой теме ничего не соображаешь.
...
Рейтинг: 0 / 0
Синхронизация Клиент(а/ов)
    #37046007
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаМСУ, ну тогда и придумывать тут нечего, берем простой WCF и дергаем по заданному интервалу из Сервелата, аналогично из других Клиентов.
В принципе да. Это может быть и какой пейдж метод, и метод asmx, и метод WCF.
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Синхронизация Клиент(а/ов)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]