2

想象一下这样的场景:您有一个由超过 1 个应用程序查询/更新的数据库,并且您还有一个使用该数据库的 RESTful 服务。

是否有可能以某种方式通知客户端(网页或其他)数据库有新数据,而无需每秒调用 Web 服务来查找新数据?

这个问题更像是一种“反应性”调用,就像 RMI 方法论一样。

我可能在做梦,但必须有一种方法可以做到这一点,而不需要每 XX 秒进行一次 AJAX 调用。

PS。如果确实需要 AJAX 调用,是否有更好/更智能的方法?

对不起,如果这个问题太愚蠢了。

我很感激你的时间。

4

2 回答 2

1

您正在谈论的这种“反应性”事物又称为“事件驱动”网络服务(例如,您可以通过使用 node.js 来实现)。事件更新通常通过多个消费者侦听更新并做出相应反应的“消息队列”提供服务。

特别是,在消息队列中侦听这些更新的行为通常是通过publisher subscriber设计模式完成的。这几天非常流行,甚至被包含在一些较新的数据库中。

以 Redis DB 的 pub sub 功能为例。

于 2013-10-17T19:33:25.780 回答
0

如果该服务真的是 RESTful,而不仅仅是使用 REST 作为流行语,那么我想最直接的方法是使用 If-Modified-Since 标头不断轮询的资源。该响应应该在某处的缓存中,客户端应该从那里获取它,并且当有新数据时应该重置缓存。

另一方面,如果您并不真正关心 REST 约束,那么您可以按照 Kristian 的响应并使用某种通知,通过消息队列、pub-sub 等。

两者之间的折衷方案是通知客户端服务器有新数据,而不是在通知中发送。我大概就是这么干的。

于 2013-11-02T20:20:51.583 回答