Самостоятельный хост объекта WCF ServiceHost - PullRequest
3 голосов
/ 18 октября 2011

Чтобы запустить службу WCF, я использую следующее:

selfHost = new ServiceHost(typeof(MyServiceClass));
selfHost.Open();

В какой-то момент это создаст экземпляр MyServiceClass. Будет ли он создавать один экземпляр или экземпляр на запрос?

Ответы [ 4 ]

4 голосов
/ 18 октября 2011

Все эти ответы верны, но они кажутся более сложными, чем вы спрашиваете. Основы того, создает ли он экземпляр для вызова, сеанса или одиночного вызова, контролируются InstanceContextMode , который является атрибутом вашего класса обслуживания. Начните читать там.

4 голосов
/ 18 октября 2011

Если вы хотите ограничить его одним экземпляром, вы можете создать экземпляр своего класса обслуживания снаружи и передать экземпляр в сервисный хост:

var myservice = new MyServiceClass();
selfHost = new ServiceHost(typeof(MyServiceClass), myservice); // forces singleton pattern
selfHost.Open();
4 голосов
/ 18 октября 2011

По умолчанию это экземпляр для запроса, но вы можете изменить это. Например, вы можете написать свой собственный IInstanceProvider и сами управлять жизнью класса обслуживания.

0 голосов
/ 18 октября 2011

Будет создан экземпляр для каждого запроса.Если вы хотите один экземпляр, вы можете использовать статический класс.Статический класс существует на протяжении всего жизненного цикла приложения.Они не восстанавливаются каждый раз, когда происходит вызов или устанавливается новое соединение WCF.

...