Wcf изолированные экземпляры - PullRequest
1 голос
/ 27 ноября 2009

Я новичок в Wcf и попытался создать свои первые службы Wcf. Добавлен класс (новая сборка), который имеет неуправляемый код и выполняет манипуляции с файлами. Поведение службы установлено следующим образом

InstanceContextMode = InstanceContextMode.Single

ConcurrencyMode = ConcurrencyMode.Single

При обращении к сервису в одном режиме создается новый класс манипулирования файлами. Я заметил, что в случае сбоя класса манипулирования файлами (утечка памяти или критическая ошибка) все новые подключения к хосту влияют на предыдущие подключения.

Можно ли создавать экземпляры Wcf, которые полностью изолированы друг от друга и полностью уничтожены после закрытия клиентского соединения?

С уважением, Tomas

1 Ответ

2 голосов
/ 27 ноября 2009

Да, это предпочтительный режим - он называется "per-call":

InstanceContextMode = InstanceContextMode.PerCall

ConcurrencyMode = ConcurrencyMode.Single

Таким образом, каждый запрос, поступающий в вашу службу WCF, получает собственный, отдельный, изолированный экземпляр класса службы, и этот экземпляр обрабатывает запрос и затем удаляется.

Это должно обеспечить максимальную производительность и изоляцию запросов друг от друга.

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