我有一个asp.net c#桌面应用程序,每5分钟不断地轮询数据库数据。
这会导致服务器负载过大,从而降低其效率。
是否有任何asp.net技术支持独立于数据库使用的发布订阅模型? 我知道长轮询是其中一种替代方案。但我正在寻找某些事件驱动的东西,而不是长时间轮询数据。 任何帮助都将不胜感激。
是否有任何asp.net技术支持独立于数据库使用的发布订阅模型? 我知道长轮询是其中一种替代方案。但我正在寻找某些事件驱动的东西,而不是长时间轮询数据。 任何帮助都将不胜感激。
Install-Package Microsoft.AspNet.SignalR
);在客户端,添加Microsoft.AspNet.SignalR.Client(Install-Package Microsoft.AspNet.SignalR.Client
)。public void AddCustomer(Customer customer)
{
using (var db = new CustomerContext)
{
db.Customers.Add(customer);
db.SaveChanges();
}
var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hub(customer.Id);
}
我认为您正在寻找类似于响应式扩展的东西。
在底层,所有这些都是通过一些轮询的实现来完成的,但是想法是尽可能使事件循环监控轮询变得高效。我不知道你在处理什么或多少数据,所以除非你要查看的数据/数据库表比较少,否则这个答案可能需要做太多工作。
不要每5分钟拉取一组数据,而是在数据库中添加一个带有单个日期时间字段的表。然后在您想要监视的表上创建触发器(添加/编辑/删除/任何操作)。当触发器被触发时,它会更新您创建的表中的日期时间。
将您的桌面应用程序更改为仅每5分钟拉取该日期时间值,将该值缓存到某个地方并在每次轮询时进行比较,如果日期时间更改,则您的桌面应用程序可以触发所需的数据更新。