В настоящее время я работаю над приложением для обмена мгновенными сообщениями. Как только клиент подключается к серверу и отправляет сообщение, он работает нормально. Второй клиент подключается, оба клиента общаются и все работает отлично. Проблема возникает, когда 2 клиента отправляют сообщение одновременно. Затем оба клиента замораживаются (при отладке я получаю тайм-аут), но msg отображается хорошо для других клиентов в чате.WCF Несколько клиентов
Это поведение сервера: поведение
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
app.config:
<behavior name="Behave">
<serviceThrottling maxConcurrentCalls="100"
maxConcurrentSessions="100"
maxConcurrentInstances="100" />
</behavior>
Я новичок, когда дело доходит до WCF, и я не уверен, что понимаю его полностью. Я пробовал менять вещи, но ничего не помогает. Любая помощь была бы весьма признательна. Если требуется дальнейший код, я предоставил его по запросу.
Вы пытались изменить InstanceContextMode = InstanceContextMode.PerCall ?? –
@NadeemKhoury Я уже пробовал, но мне нужно использовать singleton. Если я использую PerCall или PerSession, в зависимости от того, какой из двух, то мое приложение становится испорченным. Случается, что 2 клиента (или любые другие клиенты) НЕ смогут общаться, потому что для каждого из них создается новый объект. Они могут отправлять сообщения, хотя ни один из них не будет виден другому. Я не уверен, что мои объяснения достаточно хороши для понимания поведения приложения, поэтому, пожалуйста, дайте мне знать, если это не так. – Chogart
Перебирать все. Это всего лишь пользовательский интерфейс 2-х клиентов, замораживающих. И это все. Я думаю, что проблема заключается в синхронизации. – Chogart