Могу ли я прослушать событие WCF из веб-клиента? - PullRequest
1 голос
/ 09 марта 2011

Могу ли я прослушать событие WCF из веб-клиента?Это возможно?Я не говорю об обратном вызове, я хочу, чтобы служба WCF поднималась, а событие и веб-клиент могли слушать.Есть хороший пример этого в C #?

1 Ответ

0 голосов
/ 10 марта 2011

Нет событий в WCF. Если вы хотите имитировать событие, вам все равно придется вызывать какую-либо операцию, открытую для всех клиентов = вы должны вызвать службу WCF или обратный вызов, предоставляемый для клиента.

Что вы подразумеваете под веб-клиентом? Вы имеете в виду код JavaScript, работающий в веб-браузере? В таком случае нет, вы не можете достичь этого с WCF. Вы можете использовать только вызовы AJAX от borowser и постоянно опрашивать сервис на предмет возможных «событий».

Если вы имеете в виду приложение ASP.NET, то теоретически ответ - да, но на практике это будет довольно сложно. Причина в том, что в ASP.NET вы обрабатываете только текущий HTTP-запрос от какого-либо обработчика - например, Page. Время жизни обработчика предназначено только для обслуживания одного запроса. В связи с этим использование дуплексного сервиса не имеет особого смысла, потому что для получения обратных вызовов дуплексным сервисом ваш клиентский прокси должен жить. Если вы откроете прокси в Page, он умрет после обработки запроса. Если вы открываете прокси в отдельном потоке, вы должны каким-то образом сопоставлять поступающие обратные вызовы с реальным клиентом, но клиент все равно должен опрашивать веб-сервер, чтобы получать уведомления о обратных вызовах. Аналогичная ситуация будет с выставлением сервиса в приложении ASP.NET.

Разница между асинхронными и дуплексными вызовами велика. В асинхронном шаблоне один запрос всегда имеет один ответ. Resonse не отправляется без запроса. В дуплексном режиме вы можете сделать один запрос и получить тысячи обратных вызовов с сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...