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

Вот что я хочу сделать:

  1. У вас есть служба Windows, в которой размещается служба WCF. Эта служба также будет получать уведомления от SQL Server через SQLDependency.
  2. Когда служба Windows получает уведомление от SQL Server о том, что что-то изменилось, я хочу, чтобы он инициировал обратный вызов для всех клиентов через службу WCF, которую он размещает.

Вот что у меня есть до сих пор:

  1. Служба WCF с обратным вызовом и т. д. Она работает, и клиенты получают обратный вызов (но пока только в том случае, если клиент сначала отправляет сообщение!).
  2. Служба Windows, на которой размещена служба WCF, и получение уведомлений SQLDependency.

Вот где я упал лицом вниз:

  1. Как заставить службу Windows уведомить службу WCF о том, что она должна отправить сообщение клиентам?

person richard    schedule 13.05.2011    source источник


Ответы (1)


Создайте общедоступный метод в службе WCF, который может вызываться вашей службой Windows, которая будет инициировать обратный вызов для всех клиентов. Затем добавьте ссылку на службу WCF в свою службу Windows, и оттуда все должно быть легко.

person Mikecito    schedule 13.05.2011
comment
Все, что у меня есть в службе Windows, это ServiceHost myService = new ServiceHost(typeof(MyService.MessageService)); myService.Open(); Как мне вызвать общедоступный метод в службе WCF (MyService.MessageService)? - person richard; 14.05.2011
comment
Хорошо, я понял это. Вместо этого мне нужно было запустить службу так: MyService.MessageService newMyMessageWCFService = new MessageService(); ServiceHost myService = new ServiceHost(newMyMessageWCFService);, а также добавить этот атрибут в мою службу: [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]. - person richard; 14.05.2011