从Web服务调用控制器操作

时间:2011-04-27 11:37:54

标签: asp.net-mvc web-services asp.net-mvc-2 asp.net-mvc-3 asynchronous

我有一个ASP.NET MVC应用程序呈现一些数据,我希望它

  • 打开新标签页,或
  • 重定向到新视图

当网络服务给我一个信号时。这个WS应该处理一些外部数据和请求,当调用某些特定的动作时,我希望它能够为我的Web应用程序提供某种信号。

我正在考虑将Html.Action用于异步控制器,但后来我不知道如何从WS向控制器(或它们的所有实例)提供信号。

希望这是可以理解的。你知道需要做什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

所以基本上你的问题归结为服务器状态发生了变化(通过WS),我们希望在正在查看你的web应用程序的客户端发生一些事情。

坦率地说,这不是直截了当的。互联网适用于客户端 - >服务器架构。用户向服务器发送请求,服务器响应。你要做的就是逆转它。您想要从服务器向用户发送请求。 HTTP协议不能像那样工作。

现在,使用以下两种策略做类似的事情:

  1. Websockets :尝试在谷歌上搜索它们。您在客户端和服务器之间创建一个套接字,一旦服务器由WS更新,它就会通过套接字向客户端发送请求。您可以要求它导航到其他视图或打开一个新窗口。它的缺点是它不受大多数​​浏览器的支持。可能需要一年左右的时间。现在不太推荐。

  2. 轮询:您可以在一定的时间间隔内从浏览器向服务器发出Ajax请求(您知道每5秒钟一次)并查看服务器状态是否已更改或现在。如果是,那就去做吧。这是最常用的技术。 Twitter.com使用它。还有另一个版本称为Comet或Long Polling,但我不会将此与您混淆。

  3. 这里要注意的重要一点是,无论你想做什么(打开标签,更改视图等),你都必须通过客户端的Javascript来完成。

    希望有所帮助