Вызвать действие контроллера из веб-службы - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть приложение ASP.NET MVC, представляющее некоторые данные, и я хочу, чтобы

  • открыло новую вкладку или
  • перенаправило в новое представление

когда веб-сервис дает мне сигнал.Предполагается, что этот WS обрабатывает некоторые внешние данные и запросы, и когда вызывается какое-то конкретное действие, я хочу, чтобы оно могло давать моему веб-приложению какой-то сигнал.

Я думал об использовании Html.Action дляасинхронный контроллер, но тогда я не знаю, как передать сигнал от WS к контроллеру (или всем его экземплярам).

Надеюсь, это понятно.У вас есть идея, что нужно сделать?

Заранее спасибо.

1 Ответ

1 голос
/ 28 апреля 2011

Таким образом, в основном ваша проблема сводится к тому, что состояние сервера изменяется (через WS), и мы хотим, чтобы что-то произошло на стороне клиента, где просматривается ваше веб-приложение.

Честно говоря, это не так просто. Интернет работает на клиенте -> Архитектура сервера. Пользователь отправляет запрос на сервер, сервер отвечает. То, что вы пытаетесь сделать, это наоборот. Вы хотите отправить запрос с сервера пользователю. Протокол HTTP не работает так.

Прямо сейчас, чтобы сделать нечто подобное, используются следующие две стратегии:

  1. Websockets : попробуйте найти их в Google. Вы создаете сокет между клиентом и сервером, и как только сервер обновляется WS, он отправляет запрос клиенту через сокет. Вы можете попросить его перейти к другому представлению или открыть новое окно. Недостатком является то, что он не поддерживается большинством браузеров. Может потребоваться год или около того, чтобы быть. Не очень рекомендую сейчас.

  2. Опрос : Вы можете отправлять запросы Ajax от браузера к серверу через определенные промежутки времени (вы знаете, как каждые 5 секунд) и видеть, изменилось ли состояние сервера или сейчас. Если да, то делай свое дело. Это самая распространенная техника. Twitter.com использует это. Существует также другая версия, называемая Comet или Long Polling, но я не буду вас с этим путать.

Здесь важно отметить, что все, что вы хотите сделать (открыть вкладку, изменить представление и т. Д.), Вы должны сделать это через Javascript на стороне клиента.

надеюсь, что поможет

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