6

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

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

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

我该如何去做——考虑到解决方案的架构——Web 应用程序需要将数据推送到同一网络(LAN)中的桌面应用程序(客户端)?

4

5 回答 5

7

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

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

于 2009-05-25T17:20:08.167 回答
2

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

于 2009-05-25T17:07:48.460 回答
1

您可能对SO question感兴趣。你所描述的听起来像一个彗星应用程序 - 服务器推送到客户端。

于 2009-05-25T17:17:01.133 回答
1

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

于 2010-01-10T16:45:53.213 回答
0

如果您可以让套接字保持打开状态,则客户端可以连接到服务器,并且服务器可以在适当的时候将数据推送到套接字。没有理由启动连接的一侧必须始终是启动数据传输的一侧。

于 2009-05-25T17:04:33.740 回答