Я создаю карточную игру silverlight, которая взаимодействует со службой WCF с использованием дуплексной привязки
Каждый клиент связывается со службой, когда наступает его очередь, отправляя свое удостоверение личности и карты, которые он хочет разыграть
И в ответ обновленное состояние игры передается каждому клиенту
Пока я тестировал, я настроил инстансинг следующим образом
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
Это означает, что состояние игры сохраняется в памяти.
Теперь, если я хочу настроить это для широкого использования (вряд ли это будет очень популярно, но давайте предположим, что в одно и то же время можно играть более чем в одну игру), какой будет наиболее подходящий режим Instancing WCF?
В настоящее время я думаю, что сериализация состояния игры с базой данных документов после каждого хода игрока, а затем повторное получение его по будущим коммуникациям клиента
Но мне любопытно узнать, есть ли способ сохранить состояние игры в памяти, но для нескольких игр
например. если одновременно происходит три игры, могут ли клиенты для игры A все подключаться к одному экземпляру службы, а клиенты для игры B - к другому экземпляру?
Или единственный способ заставить каждого клиента передать идентификатор игры и получить сериализованное состояние игры из БД или другого хранилища данных?
EDIT:
Меня особенно интересуют службы Sharable - см. Эту статью
http://msdn.microsoft.com/en-us/magazine/cc163590.aspx
Но это, кажется, не доступно в версии WCF, которую я использую. У меня есть только Single, Persession и PerCall