Вопрос

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

InstanceContextMode = InstanceContextMode.Single

ConcurrencyMode = ConcurrencyMode.Single

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

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

с уважением, Томас

Это было полезно?

Решение

Да, это предпочтительный режим — он называется «по вызову»:

InstanceContextMode = ЭкземплярContextMode.PerCall

ConcurrencyMode = ConcurrencyMode.Single

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top