Повышение событий от сервиса WCF до потребления DLL - PullRequest
0 голосов
/ 06 декабря 2010

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

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.
Что я делаю неправильно, и есть ли другой способ сделать это?
Благодаря.

1 Ответ

0 голосов
/ 12 ноября 2011

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

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

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

...