首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何持续观察Web服务提供的数据库查询?

我应该如何持续观察Web服务提供的数据库查询?
EN

Stack Overflow用户
提问于 2013-02-12 02:04:25
回答 1查看 579关注 0票数 1

我正在开发一个Web应用程序,该应用程序应该查询Web服务(ASP.NET Web API)以获取特定数据,并将结果可视化。查询的数据可以在客户端应用程序运行时改变,因为项可以被添加到相应的数据库集合或从对应的数据库集合中移除。客户端本身或其他客户端都可以修改集合(通过Web服务)。数据库服务器RavenDB能够将更改通知其客户机( Web服务)。

我想知道的是,当Web服务中的数据发生变化时,客户端应该如何保持最新?具体地说,如果Web服务的数据库发生更改,导致客户端的数据视图变得过时,客户端应该会收到最新的查询结果。保持与客户端的持久连接(例如,通过SignalR ),并在每次数据库发生更改时通知它们,以便每个客户端都可以重新查询数据,这是不是一个好主意?这些更改通知是否应该加以限制,以防它们变得过于频繁?

示例场景

数据库包含以下项(JSON表示法):

代码语言:javascript
复制
[{"Id": "2", "User": "usera"}, {"Id": "1", "User": "usera"},
    {"Id": "3", "User": "userb"}, {"Id": "4", "User": "usera"}]

客户端A请求User ==为"usera“的项目,分页到最多2个项目,并按Id排序;服务返回以下集合:

代码语言:javascript
复制
[{"Id": "1", "User": "usera"}, {"Id": "2", "User": "usera"}]

然后客户端B告诉服务删除以下项:{"Id": "2", "User": "usera"},这样数据库就变成:

代码语言:javascript
复制
[{"Id": "1", "User": "usera"}, {"Id": "3", "User": "userb"},
    {"Id": "4", "User": "usera"}]

现在的问题是,Web服务如何通知客户机A它应该重新查询新数据?也就是说,客户端A应刷新其视图以包含以下内容:

代码语言:javascript
复制
[{"Id": "1", "User": "usera"}, {"Id": "4", "User": "usera"}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 04:05:05

你说的话听起来是对的。您可以同时托管Web API和SignalR。您可以使用Web API检索数据,并使用SignalR在数据发生更改时通知客户端。您可以通知客户端数据已更改,以便它们可以重新查询,也可以实际将更改发送到客户端,以便它们可以避免重新查询API。

您还可以使用不同的模型,其中客户端每隔15秒或30秒轮询服务器,并更新可视化结果。这样做的好处是不需要持久连接,而且更容易实现。但是,更改将需要更长的时间才能传播到客户端,如果结果集很大,或者更改不频繁,则最终可能会消耗更多带宽(因为无论是否确实有任何更改,轮询都会发生)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14818114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档