подписка на асинхронное событие веб-службы на странице winform и aspx (C #) - PullRequest
0 голосов
/ 28 марта 2011

У меня есть элемент управления WebBrowser на winform. Элемент управления WebBrowser показывает страницу aspx, которая имеет GridView.

У Winform также есть сетка. Сетка в winform и gridview на странице aspx извлекают данные из одной и той же таблицы в одной базе данных. Идея заключается в том, что, когда я выбираю строку на стороне окна, она должна выбираться на странице aspx без нажатия клавиши F5 / Обновить. И когда строка выбрана на странице aspx, она выбирается в сетке winforms.

Я подумал, что мне придется использовать веб-сервис с событием, на которое подписываются как страница aspx, так и winform. Я предполагаю, что это лучший способ решить проблему, если нет другого пути. Проблема в том, что я очень новый asp и c #, и такие события и веб-сервисы тоже очень незнакомая территория.

  1. Как мне написать такое событие в веб-сервисе?

  2. Как мне подписаться на нее на странице aspx?

  3. Как мне подписаться на нее в Winform?

Пожалуйста, помогите

Спасибо

Ответы [ 2 ]

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

Разве не было бы намного проще добиться того, что вы пытаетесь сделать, используя WebBrowser.ObjectForScripting , чтобы поддерживать их синхронизацию? Когда вы выбираете элемент в своем клиентском приложении, он запускает событие javascript в элементе управления веб-браузера, чтобы также выбрать его там ...

Основная сводка подхода заключается в том, что приложение контейнера (WinForms one) может получить доступ к содержимому элемента управления WebBrowser, чтобы запустить событие JS на встроенной странице. Используя те же методы, JS в элементе управления WebBrowser также может обмениваться данными с клиентским приложением, поэтому вам не нужно пытаться написать службу для включения этого канала связи.

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

Альтернатива 1:

Вы можете использовать ajax для опроса веб-службы. Пусть веб-служба ответит сообщением «ничего нового» или желаемой информацией.

Проверьте методы ajax в jQuery для простой обработки.

Альтернатива 2:

Внедрить COMET аналогичный подход. Google "asp.net комета". По сути, вы создаете долгоживущий запрос (через ajax), когда веб-сервер не отвечает, пока не произойдет что-то новое или не истечет время ожидания запроса.

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