Модель уведомлений MVC Просмотр изменений - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь разработать очень простую форму обмена сообщениями (формы MVC C #), в которой форма отображает, сколько непрочитанных сообщений имеет пользователь. Если в моей модели должно появиться новое сообщение, как вы уведомите представление (какими методами)? Кажется, я не могу обойти это.

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

В идеале вам нужна какая-то технология push , поскольку в вашем сценарии сервер инициирует обновление.

Я бы предложил два возможных решения:

  1. Опрос (с использованием AJAX ): это в основном означает периодический запрос текущего количества непрочитанных сообщений, и, таким образом, в данном случае все равно браузер инициирует соединение, а не сервер. См. Ссылку для примера того, как запросить сервер и обновить свое представление полученными данными.
  2. Если ваш сервер знает о моменте прибытия нового сообщения, я предлагаю использовать SignalR . Это обертка вокруг нескольких самых популярных push-технологий (включая возврат к длинному опросу, если выясняется, что он не может работать лучше). Я использую это для моего большого удовлетворения в наших проектах, и это работает как шарм. После настройки базовой инфраструктуры (см. здесь ), вы можете напрямую вызывать методы вашего клиента из контроллера MVC или вызывать код сервера напрямую из клиента (в обоих случаях клиент ссылается на некоторый JavaScript вы используете по вашему мнению)

Если вы ожидаете все больше и больше информации, которую вам необходимо будет обновить в будущем, я бы определенно проголосовал за SignalR, так как это сделает ваш код более удобным для обслуживания.

1 голос
/ 09 марта 2012

Если вы говорите о приложении форм Windows на C #, то вы хотите использовать шаблон Observer. См. здесь для шаблона. В основном вы хотите, чтобы ваш контроллер регистрировался в модели через шаблон наблюдателя, чтобы получать уведомления о любых изменениях модели, которые могут привести к устареванию представления. Затем контроллер может уведомить представление для повторного рендеринга затронутой части.

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