Как мне работать с шаблоном реентерабельных вызовов в WCF? - PullRequest
2 голосов
/ 01 сентября 2010

Представьте себе дуплексный сервис WCF, содержащий список подписчиков.В какой-то момент служба отправляет данные всем абонентам, и некоторые из них могут немедленно снова позвонить в службу.ConcurrencyMode службы - Single, поэтому этот вызов завершается с ошибкой.

Я хотел бы избежать этого исключения и нашел два возможных решения:

  1. Измените ConcurrencyMode на Reentrant илидаже несколько.Для этого требуется внутренняя синхронизация, поэтому я бы предпочел ее избежать.
  2. Убедитесь, что клиент ожидает завершения вызова с сервера, прежде чем снова вызывать.Это требует некоторой буферизации на стороне клиента, но я, вероятно, все еще выберу ее.

Что вы думаете об этих идеях?Есть ли другие способы?Как ты решил это?

1 Ответ

0 голосов
/ 03 сентября 2010

Я бы посоветовал вам прочитать главу 8.2 из Программирование служб WCF Ювала Лоуи. Он касается вопроса повторного входа, а также того, как спроектировать повторный вход, поскольку могут быть некоторые ошибки.

...