2013-07-26 2 views
0

Я создаю службу WCF (для запуска в IIS), с которой может разговаривать клиент. Периодически я хочу, чтобы мой сервер отправил сердцебиение на главный сервер.Возможно ли инициировать периодические события из службы WCF?

В настоящий момент единственный способ, которым я это вижу, - создать вторую службу Windows, которая будет посылать пульс.

Есть ли способ получить мою первоначальную службу WCF для периодического запуска события, чтобы я мог сделать все с помощью только одной службы?

ответ

1

Не очень хороший способ в службе WCF

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

1

Что вы хотите сделать, может быть достигнуто с помощью server push или full-duplex. Но для heartbeat вы можете обойтись с помощью простого http ping, используя WebClient, как описано here. При самообслуживании (без IIS) вы можете переопределить ServiceBase.OnStart/OnStop и запустить/остановить таймер для периодического запуска пинга.

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

Это зависит от цели, которой требуется сердцебиение на главный сервер. Не могли бы вы позволить серверу периодически выполнять запрос в службе WCF?

Если вам действительно нужна длительная работа, тогда размещение WCF в службе Windows вместо IIS может быть вариантом.

Смежные вопросы