WCF Самостоятельная служба, очистка клиента при остановке службы - PullRequest
1 голос
/ 04 февраля 2009

Мне любопытно узнать, как бы я настроил свою службу для чистой остановки на сервере, на котором будет установлена ​​служба. Например, когда у меня много клиентов, подключающихся и выполняющих операции каждую минуту, и я хочу отключить службу для обслуживания, как я могу сделать это в событии «OnStop» службы, чтобы затем позволить главному узлу службы запретить любое клиентские соединения и позволяют текущим соединениям завершить работу до того, как он фактически отключит свои сервисы от клиента, это обеспечит защиту данных на сервере при его отключении.

Сейчас я не настроен как одиночка, потому что мне нужна масштабируемость в сервисе. Поэтому мне нужно как-то заставить мой сервисный хост делать это независимо от того, сколько экземпляров создается из класса сервиса.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2009

Вам просто нужно вызвать Dispose для созданного вами экземпляра ServiceHost. После этого вы больше не будете принимать клиентов, и служба продолжит завершать операции для клиентов, которые уже подключены.

0 голосов
/ 21 марта 2010

Для этого. Мне пришлось создать ссылку на собственную службу и в Windows Service OnStop инициировать новое соединение и изменить значения в службе WCF, чтобы «выключить» (это был просто общий логический тип, что служба была в сети или в автономном режиме) служба настолько новая клиенты не смогут подключиться (функция, которую клиент будет вызывать, чтобы увидеть, был ли сервер подключен или отключен), и существующие подключения успеют завершить работу, а затем, после того как все клиенты отключатся, продолжат закрывать службу WCF, используя .Закрыть метод.

0 голосов
/ 04 февраля 2009

Мне интересно то же самое. Я нашел эту статью, в которой есть довольно глубокое описание того, как правильно закрыть / удалить как ServiceHost или Client.

http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/

...