Вопрос
Я новичок в Wcf и пытался создать свои первые сервисы Wcf.Добавлен класс (новая сборка), который имеет неуправляемый код и выполняет манипуляции с файлами.Поведение службы установлено следующим образом
InstanceContextMode = InstanceContextMode.Single
ConcurrencyMode = ConcurrencyMode.Single
Когда доступ к службе осуществляется в одном режиме, создается новый класс манипуляции файлами.Я заметил, что в случае сбоя класса манипуляции файлами (утечка памяти или критическая ошибка) на все новые подключения к хосту влияют предыдущие подключения.
Можно ли создать экземпляры Wcf, которые полностью изолированы друг от друга и полностью уничтожаются после закрытия клиентского соединения?
с уважением, Томас
Решение
Да, это предпочтительный режим — он называется «по вызову»:
InstanceContextMode = ЭкземплярContextMode.PerCall
ConcurrencyMode = ConcurrencyMode.Single
Таким образом, каждый запрос, поступающий в вашу службу WCF, получит собственный, отдельный изолированный экземпляр класса службы, и этот экземпляр будет обрабатывать запрос, а затем будет удален.
Это должно обеспечить максимальную производительность и изоляцию запросов друг от друга.