我有一个基于JavaScript的客户端,目前正在轮询.NET Web服务以获取新内容。虽然轮询起作用...但我对这种方法不满意,因为在没有接收到任何更改时,我使用了系统资源并创建了开销。
我的问题是如何通知我的客户端有新内容可供显示?我愿意使用任何其他技术来实现这个解决方案。
我有一个基于JavaScript的客户端,目前正在轮询.NET Web服务以获取新内容。虽然轮询起作用...但我对这种方法不满意,因为在没有接收到任何更改时,我使用了系统资源并创建了开销。
我的问题是如何通知我的客户端有新内容可供显示?我愿意使用任何其他技术来实现这个解决方案。
使用轮询与前置缓存服务器相结合是一个不错的解决方案。您可以在服务器上编写逻辑,根据每个客户端更新缓存,从而减少每次轮询的负载。您可以为已登录/轮询过的用户更新缓存,以进一步减少缓存更新。对我来说,从技术角度来看,实现拉取比推送更容易。
http://www.ape-project.org/ 我认为是你寻找的好地方。它基于ajax push或者一些人称之为reverse ajax。还有其他项目,它们都基于:http://en.wikipedia.org/wiki/Comet_(programming)。
我提到ape项目是因为你可以在其中使用JavaScript,或者如果你想要在服务器端使用C++、PHP、Python等等。:-)
你已经听说过HTTP轮询(COMET)了。这就留下了一个问题,即http服务器本身(IIS+ASP)如何在不轮询数据库的情况下检测到数据库中的更改。使用SQL Server,您可以使用像查询通知这样的技术,它允许您的ASP.Net进程在缓存的记录上发生更改时得到通知。您还可以查看LinqToCache项目,该项目允许将查询通知与LINQ查询混合使用。