Преобразует ли WCF параллельные вызовы одного и того же клиента (используя разные потоки) в последовательный?

2

У меня есть собственная сеть WCF-сервиса tcp, которая предоставляет два метода, и сервис не является потокобезопасным и является (PerSession).

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

Итак, я спрашиваю, есть ли у вас параллельный вызов от того же клиента, тогда служба будет серийна? или я ошибаюсь? и хорошо ли получить доступ к объекту службы wcf из разных потоков?

  • 0
    (ответил на комментарий)
Теги:
multithreading
wcf

2 ответа

2
Лучший ответ

"за сеанс" является "контекстный режим экземпляра" - это просто гарантирует вам один и тот же объект со стороны службы (реализация услуги) на время сеанса. Я считаю, что вы должны смотреть на "concurrency mode" . Если это "одиночный", то вызовы синхронизируются (последовательно), но это не единственная настройка; "multiple" и "re-entrant" разрешат сразу несколько потоков в службу.

  • 0
    хорошо, я спрашиваю о разных вызовах с одного и того же клиента, и каков режим параллелизма по умолчанию, потому что я не упомянул об этом в службе
  • 1
    По умолчанию одиночный, так что да, они будут последовательными. Обратите внимание, что это используется в сочетании с режимом контекста экземпляра - поэтому сериализуются только вызовы в одном и том же сеансе (но два разных сеанса с отдельными объектами svc могут выполняться параллельно).
2

Глава 8 Juval Lowy Программирование WCF Services "содержит почти все, что вам может понадобиться, чтобы узнать о concurrency с WCF. Это неофициальная" Библия" WCF. Я настоятельно рекомендую проверить его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню