客户端(桌面应用程序)提取数据......但我希望服务器(Web应用程序)推送数据

时间:2009-05-25 17:01:26

标签: architecture .net-2.0 client-server server-push

我有一个客户端 - 服务器应用程序 - 其中服务器本质上是一个ASP .NET Web应用程序,分布式客户端是桌面应用程序。

客户端需要从服务器接收一些数据 - 当客户端有新数据时。现在,这样做的方式是 - 客户端每x分钟(比如说2分钟)不断查询Web服务,并不断检查客户端是否有新数据。

理想情况下,它应该工作的方式是桌面应用程序应该在可用时接收更新,它不需要从服务器拉出来;相反,服务器应该能够推送到客户端。

如何实现这一目标 - 考虑到解决方案的架构 - Web应用程序需要将数据推送到同一网络(LAN)中的桌面应用程序(客户端)?

5 个答案:

答案 0 :(得分:7)

你所描述的是“服务器推送”,这些日子通常被称为“COMET”。在网络搜索中使用这些关键字应该会提供很多有用的信息。

最常见的技术称为“悬挂GET”。客户端向特定URL发送GET请求,服务器接受连接,但延迟发送响应,直到有数据要发送。当客户端收到响应时,它会发送另一个GET,以便它准备好发送另一条消息。

答案 1 :(得分:2)

您可以使用WCF回调 - 这是一个Web服务,您可以在其中订阅来自客户端的通知,服务器将向订阅的客户端发送消息。我的博客上有beginners guide

答案 2 :(得分:1)

您可能对SO question感兴趣。您所描述的内容听起来像是Comet应用程序 - 服务器推送给客户端。

答案 3 :(得分:1)

查看WebSync;它是ASP.NET / IIS的Comet解决方案,但也有一个完整的.NET客户端,它可以与胖客户端,Windows服务等集成。所以听起来它应该非常适合该法案。

答案 4 :(得分:0)

如果您可以打开套接字,客户端可以连接到服务器,服务器可以在适当的时候将数据向下推送到套接字。启动连接的一方必须始终是启动数据传输的一方。