Чтобы запустить службу WCF, я использую следующее:
selfHost = new ServiceHost(typeof(MyServiceClass)); selfHost.Open();
В какой-то момент это создаст экземпляр MyServiceClass. Будет ли он создавать один экземпляр или экземпляр на запрос?
MyServiceClass
Все эти ответы верны, но они кажутся более сложными, чем вы спрашиваете. Основы того, создает ли он экземпляр для вызова, сеанса или одиночного вызова, контролируются InstanceContextMode , который является атрибутом вашего класса обслуживания. Начните читать там.
Если вы хотите ограничить его одним экземпляром, вы можете создать экземпляр своего класса обслуживания снаружи и передать экземпляр в сервисный хост:
var myservice = new MyServiceClass(); selfHost = new ServiceHost(typeof(MyServiceClass), myservice); // forces singleton pattern selfHost.Open();
По умолчанию это экземпляр для запроса, но вы можете изменить это. Например, вы можете написать свой собственный IInstanceProvider и сами управлять жизнью класса обслуживания.
Будет создан экземпляр для каждого запроса.Если вы хотите один экземпляр, вы можете использовать статический класс.Статический класс существует на протяжении всего жизненного цикла приложения.Они не восстанавливаются каждый раз, когда происходит вызов или устанавливается новое соединение WCF.