У меня есть службы WCF, обнажая ServiceContract с BasicHttpBinding, поэтому от моего понимания InstanceContextMode будет установлен PerCall (как BasicHttpBinding не поддерживает сеансов) и ConcurrenyMode будет установлен на Покадровый.PerCall InstanceContextMode поведение службы WCF
Клиент этого WCF является службой Windows, которая одновременно вызывает 4 различных операции над сервисом, в рамках службы мы использовали одноэлементный класс, и имеется несколько статических переменных. Мы столкнулись с проблемой, когда неправильное значение передается некоторым хранимым процедурам БД.
С Percall InstanceContextMode и Single concurrency mode я понимаю, что новая служба instacne создана для каждого вызова, и поэтому я думаю, что даже если есть несколько одноэлементных классов (мы не сделали их потокобезопасными) в реализации сервиса и статические переменные все объекты будут уничтожены, но мы наблюдаем запуск профилировщика SQL, который по старому значению получает переданный БД.
Мы написали наш код службы WCF в виде трехуровневой архитектуры, я имею в виду ServiceClass, BusinessLogicLayer и DataAccessLayer, причем PerCall устанавливается как экземплярContextMode, когда мы говорим, что экземпляр службы уничтожается после завершения запроса клиента. означает, что мы уничтожаем весь объект в ServiceClass, BusinessLogicLayer и DataAccessLayer?
Pls помочь мне понять, что может быть пойдет не так
Есть ли причина, по которой вы используете одиночные игры? Это кажется крайне неудовлетворительным шаблоном в вашей архитектуре. Без синглтонов и использования некоторой надлежащей отладки вы должны быть в порядке. – nvoigt