2010-12-06 2 views
0

Hi
Хотя это просто, я не знаю, как это сделать.
Я пытаюсь подписать dll событиям, происходящим на стороне сервера.
У клиентов есть экземпляр этой DLL, и они должны получать уведомления с сервера.
на службе я определил (C#):
Получение событий из службы WCF для использования dll

public delegate ActionResult ActionComplitedHandler(object sender,ActionComplitedEventArgs e); 

.

public event ActionComplitedHandler ActionComplited; 

     public void OnActionComplited(ActionResult actionResult) 
     { 
      if (ActionComplited != null) 
      { 
       ActionComplitedEventArgs args = new ActionComplitedEventArgs(); 
       args.ActionResult = actionResult; 
       ActionComplited(this, args); 
      } 
    } 

Но при попытке подписать dll на мероприятие я не могу его видеть.

mySeriveInstance.ActionComplited+=... //(I don't get the eventHandler after the dot) 

Я предпочитаю не использовать обратный вызов WCF.
Экзамен службы WCF Single.
Что я делаю неправильно и есть ли другой способ сделать это?
Спасибо.

+0

Вы не можете использовать автоматическое завершение или вы не можете получить событие? – 2010-12-06 07:45:32

ответ

0

Есть два основных способа сделать это:

1.) Вы можете самостоятельно Размести WCF службы в клиентском приложении, и в вызове вашего сервера переходят в IP-адрес клиентской машины , Затем сервер может создать прокси-сервер и обратиться к клиенту, когда он хочет отправить ему событие

2.) Вы можете проводить опрос для событий с сервера так часто. Дайте каждому клиенту идентификатор в ответе на обслуживание, а затем они могут так часто звонить серверу с этим идентификатором. Вы можете использовать кеширование на стороне сервера для хранения списка неподтвержденных событий, а затем, когда клиент нажимает на эту ссылку, вы возвращаете самое старое событие для клиента.